为了账号安全,请及时绑定邮箱和手机立即绑定

将字符串拆分为列表但保留符号

将字符串拆分为列表但保留符号

犯罪嫌疑人X 2022-10-06 19:41:40
我想将单词拆分成一个字符串,但也将符号分开。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 回答

?
森林海

TA贡献2011条经验 获得超2个赞

您可以将此正则表达式与findallin一起使用python:


>>> s = "Hello world. This-is-foo! I love you"

>>> print ( re.findall( r'\w+|[^\s\w]+', s) )

['Hello', 'world', '.', 'This', '-', 'is', '-', 'foo', '!', 'I', 'love', 'you']

正则表达式演示

正则表达式详细信息:

  • \w+: 匹配 1 个或多个单词字符

  • |: 或者

  • [^\s\w]+; 匹配 1 个或多个非单词和非空白字符


查看完整回答
反对 回复 2022-10-06
?
慕尼黑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']


查看完整回答
反对 回复 2022-10-06
?
慕哥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']


查看完整回答
反对 回复 2022-10-06
?
森栏

TA贡献1810条经验 获得超5个赞

所有单词和无空格字符

re.findall(r'\w+|\S', s)


查看完整回答
反对 回复 2022-10-06
  • 4 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信