我想在字符串之前和之后在字符串中添加空格,前提是以下字符不是数字(9-0)。我尝试了以下代码:
newLine = re.sub(r'([,]+[^0-9])', r' \1 ', newLine)
但似乎\1
正在使用2个匹配的字符而不仅仅是逗号。
例如:
>>> newLine = "abc,abc"
>>> newLine = re.sub(r'([,]+[^0-9])', r' \1 ', newLine)
"abc ,a bc"
预期产出:
"abc , abc"
如何告诉sub
只接受'逗号'?
答案 0 :(得分:5)
使用这个:
newLine = re.sub(r'[,]+(?![0-9])', r' , ', newLine)
这里使用否定前瞻(?![0-9])
,它检查逗号后面没有数字。
你的正则表达式没有用,因为你在一个组中选择了逗号和下一个字符(使用([,]+[^0-9])
)并在两侧放置了空格。
更新:如果它不仅是逗号和其他内容,请将它们放在角色类[]
中,并使用{{1}将其捕获到组\1
中}}
()