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

我想将单词拆分成一个字符串,但也将符号分开。


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']

如您所见,这些空间都留在那里。我该如何解决这个问题?


犯罪嫌疑人X
浏览 134回答 4
4回答

森林海

您可以将此正则表达式与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 个或多个非单词和非空白字符

慕尼黑8549860

这个正则表达式应该工作:re.findall(r'\w+|\S', s)这表示单词和无空格字符。代码:import res = "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

您可以匹配单词\w+或非单词\W+(注意大写):import res = "Hello world. This-is-foo! I love you"print(re.findall(r"\w+|\W+", s))你得到:['Hello', ' ', 'world', '. ', 'This', '-', 'is', '-', 'foo', '! ', 'I', ' ', 'love', ' ', 'you']编辑如果你想避免空格,你可以这样做:import res = "Hello world. This-is-foo! I love you"print(re.findall(r"\w+|[^\w\s]+", s))你得到:['Hello', 'world', '.', 'This', '-', 'is', '-', 'foo', '!', 'I', 'love', 'you']

森栏

所有单词和无空格字符re.findall(r'\w+|\S', s)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python