如何在Python中分割单词并考虑带连字符的单词?

4
在Python中,re.split("\W+", "fat-free milk")会得到['fat', 'free', 'milk']
如何从re.split()中获得['fat-free', 'milk']呢?
我理解的问题是连字符不是字母数字字符,但我不确定如何将这个事实纳入正则表达式。我尝试过re.split("[(^\-)\W]+", "fat-free milk"),但无济于事。
4个回答

9
re.split("[^-\w]+", "fat-free milk")

9
无需正则表达式:
>>> "fat-free milk".split()
['fat-free', 'milk']

如果您想要在任何非单词字符上进行分割,但不包括连字符,您可以使用否定字符组(如John的答案)或负向先行断言,这可能会稍微更灵活一些:

>>> re.split(r'(?:(?!-)\W)+', "fat-free milk. with cream")
['fat-free', 'milk', 'with', 'cream']

人们会认为他们正在使用正则表达式来处理标点符号。 - Amber

2
>>>a="fat-free milk fat-full cream"
>>>b=a.split(' ')
>>>print(b)
['fat-free', 'milk', 'fat-full', 'cream']

0
我们可以使用这个:

re.split(" ", "脱脂牛奶")


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接