2017-02-26 1 views
1

Extrahierung Ich möchte alle 2-Buchstaben-Strings aus einem Text mit einem regulären Ausdruck extrahieren, zum Beispiel:alle Strings der Länge 2 mit re.findall

just a test 

würde mich ju, us, st, te, es, st

ich versucht mit: re.findall(r'\w{2}',text) aber es teilt nur die Wörter in 2-Buchstaben-Strings und gibt mir ju, st, te, st

Vielen Dank im Voraus für Ihre Hilfe.

+1

Verwenden Sie ['re.findall (r '(? = (\ W {2}))', Text)'] (http://ideone.com/XucVPm). –

+0

ohne Regex: 'print ([" ". Join (x) für w in" nur ein Test ".split() wenn len (w)> 1 für x in zip (w, w [1:])])' –

+0

@sin: Er markiert als Duplikat und kommentiert (nicht beantwortet), um dem OP in seiner spezifischen Frage zu helfen. Ich wünschte nur, ich könnte meine Nicht-Regex-Lösung veröffentlichen. –

Antwort

2

Ich werde die regex Lösungen regex Experten verlassen (was ich bin nicht), kann, da sie ganz einfach in einem Einzeiler Liste Verständnis ohne regex erfolgen:

s = "just a test" 
result = ["".join(x) for w in s.split() if len(w)>1 for x in zip(w,w[1:])] 

print(result) 

Ergebnis:

['ju', 'us', 'st', 'te', 'es', 'st'] 

spalten einfach die Worte, Worte Ausfiltern mit weniger als 2 Zeichen, und sie gegen ihre verschobene Kopie verschachteln mit zip

funktioniert nur, wenn t hier ist natürlich keine Interpunktion.

Verwandte Themen