2015-07-12 8 views
5

Voglio dividere le stringhe solo con suffissi. Ad esempio, mi piacerebbe essere in grado di dividere dord word in [dor,wor].Dividere per suffisso con espressione regolare Python

Mi sembra che \wd cercasse le parole che terminano con d. Tuttavia questo non produce i risultati attesi

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

Come posso dividere per suffissi?

risposta

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

o

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

Prova questo.

3

Come un modo migliore è possibile utilizzare re.findall e utilizzare r'\b(\w+)d\b' come regex per trovare il resto della parola prima d:

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

Dal \w cattura anche cifre e sottolineano, che definirei una parola composta da solo lettere con una classe [a-zA-Z] carattere:

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

Vedi demo

1

Se vi state chiedendo perché il vostro approccio originale didn 't lavoro,

re.split(r'\wd',"dord word") 

Essa trova tutte le istanze di una lettera/numero/sottolineatura prima una " d "e si divide su ciò che trova. Così ha fatto questo:

do [rd] wo [rd]

e diviso sulle corde tra parentesi, rimuoverli.

noti inoltre che questo potrebbe separati nel mezzo di parole, quindi:

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

sarebbe dividere la seconda parola in due.