2015-07-12 9 views
5

Ich möchte Strings nur durch Suffixe teilen. Zum Beispiel würde ich gerne dord word zu [dor,wor] teilen können.Split von Suffix mit regulären Ausdruck Python

Ich dachte, dass \wd nach Wörtern suchen würde, die mit d enden. Dies führt jedoch nicht zu den erwarteten Ergebnissen

import re 
re.split(r'\wd',"dord word") 
['do', ' wo', ''] 

Wie kann ich durch Suffixe teilen?

Antwort

4
x='dord word' 
import re 
print re.split(r"d\b",x) 

oder

print [i for i in re.split(r"d\b",x) if i] #if you dont want null strings. 

bereits.

3

Als besseren Weg Sie re.findall und verwenden r'\b(\w+)d\b' als regex verwenden können, um den Rest des Wortes zu finden, bevor d:

>>> re.findall(r'\b(\w+)d\b',s) 
['dor', 'wor'] 
2

Da \w auch Ziffern erfaßt und unterstreicht, würde ich ein Wort definieren, bestehend aus nur Buchstaben mit einer [a-zA-Z] Zeichenklasse:

print [x.group(1) for x in re.finditer(r"\b([a-zA-Z]+)d\b","dord word")] 

demo Siehe

1

Wenn Sie sich fragen, warum Ihr ursprünglicher Ansatz didn 't working,

Es findet alle Instanzen eines Buchstabens/einer Zahl/Unterstrich vor einem " d "und teilt sich auf, was es findet. So tat es das:

[rd] tun wo [rd]

und Split auf den Saiten in Klammern, sie zu entfernen.

Beachten Sie auch, dass diese in der Mitte von Wörtern geteilt konnte, so:

re.split(r'\wd', "said tendentious") 

würde das zweite Wort in zwei Teile gespalten.