4 回答
TA贡献1818条经验 获得超11个赞
这个正则表达式应该工作:
re.findall(r'\w+|\S', s)
这表示单词和无空格字符。
代码:
import re
s = "Hello world. This-is-foo! I love you"
print(re.findall(r"\w+|[^\w\s]+", s))
输出:
['Hello', 'world', '.', 'This', '-', 'is', '-', 'foo', '!', 'I', 'love', 'you']
TA贡献1831条经验 获得超10个赞
您可以匹配单词\w+或非单词\W+(注意大写):
import re
s = "Hello world. This-is-foo! I love you"
print(re.findall(r"\w+|\W+", s))
你得到:
['Hello', ' ', 'world', '. ', 'This', '-', 'is', '-', 'foo', '! ', 'I', ' ', 'love', ' ', 'you']
编辑
如果你想避免空格,你可以这样做:
import re
s = "Hello world. This-is-foo! I love you"
print(re.findall(r"\w+|[^\w\s]+", s))
你得到:
['Hello', 'world', '.', 'This', '-', 'is', '-', 'foo', '!', 'I', 'love', 'you']
添加回答
举报
