Python正则表达式:只有在后面没有数字时才用逗号添加空格

Sag*_*Low 1 python regex str-replace

我想在字符串之前和之后在字符串中添加空格,前提是以下字符不是数字(9-0).我尝试了以下代码:

newLine = re.sub(r'([,]+[^0-9])', r' \1 ', newLine)
Run Code Online (Sandbox Code Playgroud)

但似乎\1是采用2个匹配的字符而不仅仅是逗号.例:

>>> newLine = "abc,abc"
>>> newLine = re.sub(r'([,]+[^0-9])', r' \1 ', newLine)
"abc ,a bc"
Run Code Online (Sandbox Code Playgroud)

预期产出:

"abc , abc"
Run Code Online (Sandbox Code Playgroud)

我怎么能告诉他们sub只拿"逗号"?

Sab*_*san 5

使用这个:

newLine = re.sub(r'[,]+(?![0-9])', r' , ', newLine)
Run Code Online (Sandbox Code Playgroud)

这里使用否定前瞻,(?![0-9])它检查逗号后面没有数字.

您的正则表达式不起作用,因为您([,]+[^0-9])在组中选择了逗号和下一个字符(使用)并在两侧放置了空格.

更新:如果它不仅是逗号和其他东西,那么将它们放在字符类中[]\1使用组捕获它们()

newLine = re.sub(r'([,/\\]+)(?![0-9])', r' \1 ', newLine)
Run Code Online (Sandbox Code Playgroud)