2010-12-08 6 views
1

Ok, donc j'essaie d'obtenir la distance dans un str (appelé bigstr), à partir d'une petite variable appelée smallstr jusqu'à ce qu'elle se termine. Par exemple:Distance de str à la fin (python)

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

then 
distance = 8 

Je suis en train d'utiliser re, mais je suis un noob total avec cette bibliothèque.

Répondre

4

Je ne sais pas si vous avez besoin de nouveau pour cela, suivant devrait suffire:

Usage du découpage:

>>> 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 

En utilisant l'index:

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

Aussi, vous remarquez que distance est 9 et non 8 parce qu'il compte les espaces - 'What are '

Vous pouvez toujours utiliser une bande pour supprimer des espaces, si cela vous concerne.

Si vous voulez continuer à utiliser re: Ensuite, utilisez la recherche

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

+1, mais il semble vouloir la distance de l'extrémité de l'aiguille à la fin de la haystack, pas du début de la botte de foin au début de l'aiguille. Heureusement, c'est facile: 'len (bigstr) - len (smallstr) - bigstr.index (smallstr)'. –

+0

Ces deux réponses comptent la distance depuis le début de la chaîne, pas jusqu'à la fin de la chaîne. C'est pourquoi vous obtenez 9 et non 8. – jchl

+0

@jchl @Karl Knechtel: Merci beaucoup, j'ai mal compris la partie distance. J'ai ajouté les modifications. – 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 Aussi pour souligner mon erreur de compréhension. – pyfunc

Questions connexes