在特殊字符前面添加空格

Sal*_*anz 1 python regex string

如果这些特殊字符粘在一个单词上,如何在Python中创建RE以在这些特殊字符前面添加空格,?!

这是输入字符串:

myString= 'I like him, but is he good? Maybe he is good , smart, and strong.'
Run Code Online (Sandbox Code Playgroud)

所需的输出(如果特殊字符不粘在单词上,则不会被修改):

modifiedString= 'I like him , but is he good ? Maybe he is good , smart , and strong.'
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这个回复:

modifiedString= re.sub('\w,' , ' ,' ,myString)
Run Code Online (Sandbox Code Playgroud)

但它给出了错误的结果。它删除逗号之前的最后一个字符,这是结果示例:

modifiedString = 'I like hi , but is he good? Maybe he is goo , smar , and strong.'
Run Code Online (Sandbox Code Playgroud)

有什么建议可以解决这个问题吗?

小智 5

您可以使用re.sub

>>> import re
>>> myString= 'I like him, but is he good? Maybe he is good , smart, and strong.'
>>> re.sub('(?<=\w)([!?,])', r' \1', myString)
'I like him , but is he good ? Maybe he is good , smart , and strong.'
>>>
Run Code Online (Sandbox Code Playgroud)

(?<=\w)是匹配单词字符的回溯断言。

([!?,])是与字符集匹配的捕获组[!?,](您可以在方括号内添加要匹配的更多字符)。

\1指的是 捕获的文本([!?,])