파이썬에서 캐릭터의 위치는 어떻게 구하나요?

파이썬에서 문자열 내부의 문자 위치를 얻으려면 어떻게 해야 하나요?

질문에 대한 의견 (1)

이를 위한 두 가지 문자열 메서드, find()index()가 있습니다. 이 둘의 차이점은 검색 문자열을 찾을 수 없을 때 어떤 일이 발생하는지에 있습니다. find()-1을 반환하고index()ValueError`를 발생시킵니다.

find() 사용

>>> myString = 'Position of a character'
>>> myString.find('s')
2
>>> myString.find('x')
-1

인덱스()` 사용

>>> myString = 'Position of a character'
>>> myString.index('s')
2
>>> myString.index('x')
Traceback (most recent call last):
  File "", line 1, in 
ValueError: substring not found

파이썬 매뉴얼](https://docs.python.org/2/library/string.html)에서 발췌한 내용입니다.

string.find(s, sub[, start[, end]]) s[start:end]에 _sub_가 완전히 포함되도록 하위 문자열 _sub_가 발견되는 _s_에서 가장 낮은 인덱스를 반환합니다. 실패하면-1`을 반환합니다. start_ 및 _end_의 기본값과 음수 값에 대한 해석은 슬라이스와 동일합니다.

그리고:

string.index(s, sub[, start[, end]]) find()와 비슷하지만 하위 문자열을 찾을 수 없을 때 ValueError를 발생시킵니다.

해설 (3)

그냥 좀 찾기 위해 완성도, 문자의 문자열에서 모든 포지션을 할 경우, 다음과 같이 할 수 있습니다.

s = 'shak#spea#e'
c = '#'
print [pos for pos, char in enumerate(s) if char == c]

어떤 반환되므로 ' [4, 9]'

해설 (3)
>>> s="mystring"
>>> s.index("r")
4
>>> s.find("r")
4

"긴 와인드" 방법

>>> for i,c in enumerate(s):
...   if "r"==c: print i
...
4

을 사용하여 하위 문자열을 얻습니다,

>>> s="mystring"
>>> s[4:10]
'ring'
해설 (4)

이 때 일어나는 문자열이어야 복제본임을 포함된 문자? 내가 본 경험이 있는 인덱스 () '에서' 내 중복 너회가 물러서요 같은 색인입니다.

예를 들면 다음과 같습니다.

s = 'abccde'
for c in s:
    print('%s, %d' % (c, s.index(c)))

돌아갈 것이라고.

a, 0
b, 1
c, 2
c, 2
d, 4

이 경우 할 수 있는 뭐 그런.

for i, character in enumerate(my_string):
   # i is the position of the character in the string
해설 (1)

그냥 내가 원하는 확장명은 완성될 경우 파일 이름을 찾기 위해 마지막 & # 39, 이를 견제하기 위해 데릭쉐퍼드와 com/go/downloads_kr .& # 39, 프린트, 이 경우에 사용합니다.

path = 'toto.titi.tata..xls'
path.find('.')
4
path.rfind('.')
15

제 경우에는 다음 작동하는 어떤 전체 파일 이름을 사용하고 있다.

filename_without_extension = complete_name[:complete_name.rfind('.')]
해설 (1)
string.find(character)  
string.index(character)  

둘의 차이점을 알아보려면 문서를 살펴보고 싶으실 수도 있습니다.

해설 (1)

여러 번 문자열으로 문자 나타날 수 있습니다. 예를 들어 있는 '위치', 'e' 는 '문자열으로 마디였나 1, 4, 7' (인덱스화를 때문에 일반적으로 시작하며 zero). 하지만 제가 찾기 기능 () 는 모두 '찾기' 와 '인덱스 ()' 의 첫 번째 되돌려줍니다 포지셔닝하십시오 문자. 따라서 이 이를 해결할 수 있다.

def charposition(string, char):
    pos = [] #list to store positions for each 'char' in 'string'
    for n in range(len(string)):
        if string[n] == char:
            pos.append(n)
    return pos

s = "sentence"
print(charposition(s, 'e')) 

#Output: [1, 4, 7]
해설 (0)

['more_itertools.locate'] [1] 는 타사 도구를 aspt 있는 모든 조건을 만족하는 모든 인덱스 항목이 있다.

여기서는 모든 , 위치 찾기, '문자' &quot 인덱스화할 i&quot.

import more_itertools as mit

s = "supercalifragilisticexpialidocious"
list(mit.locate(s, lambda x: x == "i"))
# [8, 13, 15, 18, 23, 26, 30]

[1]: https://more-itertools.readthedocs.io/en/latest/api.html # more_itertools.locate

해설 (0)