我想将单词拆分成一个字符串,但也将符号分开。s = "Hello world. This-is-foo! I love you"输出应该是out: ["Hello", "world", ".", "This", "-", "is", "-", "foo", "!", "I", "love", "you"]我试过了:re.split('(\W)', s)但这是输出:['Hello', ' ', 'world', '.', '', ' ', 'This', '-', 'is', '-', 'foo', '!', '', ' ', 'I', ' ', 'love', ' ', 'you']如您所见,这些空间都留在那里。我该如何解决这个问题?
4 回答
慕尼黑8549860
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']
慕哥6287543
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']
添加回答
举报
0/150
提交
取消