如何在保留考虑带有连字符的单词的同时在Python中拆分单词?

时间:2012-03-31 17:33:20

标签: python regex

在Python中,re.split("\W+", "fat-free milk")会产生['fat', 'free', 'milk']

如何从['fat-free', 'milk']生成re.split()

我理解问题是连字符不是字母数字字符,但我不确定如何将这个事实纳入正则表达式。我试过re.split("[(^\-)\W]+", "fat-free milk")无济于事。

4 个答案:

答案 0 :(得分:9)

不需要正则表达式:

>>> "fat-free milk".split()
['fat-free', 'milk']

如果你想拆分任何不是连字符的非单词字符,你可以使用一个否定的字符组(如John的答案)或否定的前瞻,这可能会稍微灵活一些:

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

答案 1 :(得分:9)

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

答案 2 :(得分:2)

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

答案 3 :(得分:0)

我们可以使用这个

re.split(" ", "fat-free milk")