Python正则表达式:在逗号后添加空格,仅当后面不跟数字时
我想在字符串中的逗号前后添加空格,但只有在逗号后面的字符不是数字(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)