Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中拆分单词,同时考虑使用连字符的单词?_Python_Regex - Fatal编程技术网

如何在Python中拆分单词,同时考虑使用连字符的单词?

如何在Python中拆分单词,同时考虑使用连字符的单词?,python,regex,Python,Regex,在Python中,re.split(“\W+”,“无脂牛奶”)产生['fat','free','milk'] 如何从re.split()生产[“无脂”、“牛奶”] 我理解问题在于连字符不是字母数字字符,但我不确定如何将这一事实合并到正则表达式中。我尝试了re.split(“[(^\-)\W]+”,“无脂牛奶”)但没有效果。不需要正则表达式: >>> "fat-free milk".split() ['fat-free', 'milk'] 如果要拆分任何非连字符的非单词字符,可

在Python中,
re.split(“\W+”,“无脂牛奶”)
产生
['fat','free','milk']

如何从
re.split()
生产
[“无脂”、“牛奶”]

我理解问题在于连字符不是字母数字字符,但我不确定如何将这一事实合并到正则表达式中。我尝试了
re.split(“[(^\-)\W]+”,“无脂牛奶”)
但没有效果。

不需要正则表达式:

>>> "fat-free milk".split()
['fat-free', 'milk']
如果要拆分任何非连字符的非单词字符,可以使用否定字符组(如John的答案)或否定前瞻,这可能会稍微灵活一些:

>>> re.split(r'(?:(?!-)\W)+', "fat-free milk. with cream")
['fat-free', 'milk', 'with', 'cream']
我们可以用这个


re.split(“,“无脂牛奶”)

人们会假设他们使用正则表达式来处理标点符号。
re.split("[^-\w]+", "fat-free milk")
>>>a="fat-free milk fat-full cream"
>>>b=a.split(' ')
>>>print(b)
['fat-free', 'milk', 'fat-full', 'cream']