Python正则表达式:在逗号后添加空格,仅当后面不跟数字时

2 投票
1 回答
4530 浏览
提问于 2025-04-17 23:59

我想在字符串中的逗号前后添加空格,但只有在逗号后面的字符不是数字(0-9)的情况下才这样做。我试过以下代码:

newLine = re.sub(r'([,]+[^0-9])', r' \1 ', newLine)

但是看起来 \1 是把两个匹配的字符都拿到了,而不仅仅是逗号。
举个例子:

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

期望的输出:

"abc , abc"

我该怎么告诉 sub 只处理‘逗号’呢?

1 个回答

5

用这个:

newLine = re.sub(r'[,]+(?![0-9])', r' , ', newLine)

这里使用了负向前瞻 (?![0-9]),它是在检查逗号后面不能跟数字。

你的正则表达式没有用好,因为你把逗号和下一个字符(用 ([,]+[^0-9]))放在了一起,并且在两边加了空格。

更新:如果不仅仅是逗号,还有其他字符的话,那就把它们放在字符类 [] 里面,并用 () 把它们捕获到组 \1 中。

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

撰写回答