2017-10-19 10 views
1
import re 
big_string = "Some random //words to [email protected]@ out //[email protected]@ code with" 
array = [] 
x = [m.start() for m in re.finditer('//', big_string)] 
y = [n.start() for n in re.finditer('@@', big_string)] 
for i in range(len(x)): 
    array.append(big_string[x[i]+2:y[i]]) 
print array 
#output = ['words to test', 'the'] 

Le code ci-dessus fonctionne bien, comme vous pouvez le voir trouve les mots entre 2 chaînes ('//' et '@@') dans une chaîne plus grande. Nous pouvons supposer que x et y auront toujours la même longueur. Ce code ne semble pas très efficace, il doit y avoir un moyen plus simple ou plus phthonic pour atteindre les mêmes résultats? Tout avis serait grandement apprécié.Trouver tous les caractères entre 2 mots prédéterminés dans une chaîne

Répondre

1

La réponse simple can be seen here:

\/\/(.*?)@@ 

Nous échapper à la / juste au cas où, puis capture (le ()) tout entre un // et @@ et utiliser les ? non gourmands pour que nous ayons tous les courts span, pas seulement la longue durée unique.

La seule ligne:

re.findall('//(.*?)@@', big_string) 

Retours:

['words to test', 'the'] 
+0

Merci mille fois! – Chrisp