我想只用后缀来分割字符串。例如,我希望能够将dord word
拆分为[dor,wor]
。
我虽然\wd
会搜索以d
结尾的单词。然而,这不会产生预期的结果
import re
re.split(r'\wd',"dord word")
['do', ' wo', '']
如何按后缀分割?
答案 0 :(得分:4)
x='dord word'
import re
print re.split(r"d\b",x)
或
print [i for i in re.split(r"d\b",x) if i] #if you dont want null strings.
试试这个。
答案 1 :(得分:3)
作为一种更好的方法,您可以使用re.findall
并使用r'\b(\w+)d\b'
作为正则表达式来查找d
之前的其余部分:
>>> re.findall(r'\b(\w+)d\b',s)
['dor', 'wor']
答案 2 :(得分:2)
由于\w
也会捕获数字和下划线,我会定义一个单词,其中只包含[a-zA-Z]
个字符类的字母:
print [x.group(1) for x in re.finditer(r"\b([a-zA-Z]+)d\b","dord word")]
请参阅demo
答案 3 :(得分:1)
如果您想知道为什么原始方法不起作用,
re.split(r'\wd',"dord word")
它在“d”之前找到字母/数字/下划线的所有实例,并在找到的内容上分割。所以它做到了这一点:
做[rd] wo [rd]
并拆分括号中的字符串,删除它们。
另请注意,这可能会在单词中间分开,所以:
re.split(r'\wd', "said tendentious")
将第二个单词分成两部分。