2010-12-08 6 views
1

좋아요. 그래서 str (bigstr)에서 거리를 얻으 려합니다. smallstr이라는 작은 변수가 끝날 때까지 거리를 가져 오려고합니다. 예를 들어 :str에서 끝까지의 거리 (파이썬)

bigstr = 'What are you saying?' 
smallstr = 'you' 

then 
distance = 8 

내가 재를 사용하기 위해 노력하고있어,하지만 난이 라이브러리와 총 멍청한 놈입니다.

답변

4

나는 충분해야 다음, 당신은 그것을 위해 다시해야하는 경우 확실하지 않다 :

>>> bigstr.index(smallstr) 
9 
>>> len(bigstr) - bigstr.index(smallstr) -len(smallstr) 
8 

또한 것 : 인덱스를 사용

>>> bigstr = 'What are you saying?' 
>>> smallstr = 'you' 
>>> bigstr.split(smallstr) 
['What are ', ' saying?'] 
>>> words = bigstr.split(smallstr) 
>>> len(words[0]) 
9 
>>> len(words[1]) 
8 

:

분할 사용 distance은 공백을 계산하기 때문에 9가 아니라 8입니다. - 'What are '

스트립을 사용하여 공백을 제거 할 수 있습니다. 당신은 여전히 ​​재를 사용하려면

는 : 그런 다음 검색

>>> import re 
>>> pattern = re.compile(smallstr) 
>>> match = pattern.search(bigstr)  
>>> match.span() 
(9, 12) 
>>> 
+0

+1 사용하지만, 그는의 끝에 바늘의 끝에서 거리를 원하는 것 같다 건초 더미의 시작부터 바늘의 시작까지 건초 더미가 아닙니다. 다행히도, 그것은 쉽습니다 :'len (bigstr) - len (smallstr) - bigstr.index (smallstr)'. –

+0

이 두 대답은 문자열의 시작부터 거리를 계산합니다. 문자열의 끝까지 계산하지 않습니다. 그것이 당신이 8이 아닌 9가되는 이유입니다. – jchl

+0

@ jchl @Karl Knechtel : 고맙습니다. 나는 거리 부분을 오해했습니다. 수정 사항을 추가했습니다. – pyfunc

1
bigstr = 'What are you saying?' 
smallstr = 'you' 

import re 
match = re.search(smallstr, bigstr) 
distance = len(bigstr) - match.end() 
5
distance = len(bigstr) - (bigstr.index(smallstr) + len(smallstr)) 
+0

+1 또한 내 이해의 오류를 지적했다. – pyfunc