python - 替换所有出现的连续重复值对

标签 python regex

我有一个带有重复连续逗号的字符串,我想在逗号之间插入一个字符,例如零。当我运行 re.sub 时,它返回的是:

re.sub(r",,", ",0," , "a,,,,,,,,,,,,,a",)
'a,0,,0,,0,,0,,0,,0,,a'

我想要的结果是所有替换,例如:

'a,0,0,0,0,0,0,0,0,0,0,0,0,a'

我明白为什么会发生这种情况,模式中有重叠,但我不知道如何修复它。

最佳答案

您可以使用前瞻来匹配一个逗号后跟另一个逗号,并将匹配项替换为 ",0",例如:

>>> re.sub(r",(?=,)", ",0", "a,,,,,,,,,,,,,a")
'a,0,0,0,0,0,0,0,0,0,0,0,0,a'

或者不使用正则表达式:

>>> ",".join(x or "0" for x in "a,,,,,,,,,,,,,a".split(","))
'a,0,0,0,0,0,0,0,0,0,0,0,0,a'

关于python - 替换所有出现的连续重复值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23351637/

相关文章:

用于处理转义分隔符和转义转义字符的 Java String.split() 正则表达式

PHP 正则表达式将新行限制为最多两个

python - 将 Python 应用程序编译为 C

python - 有效地将大量 SciPy 稀疏矩阵条目设置为零

python - wxPython:如何在多行 TextCtrl 上监听 EVT_CHAR 事件?

python - 如何遍历 Django 中的所有设置?

regex - 对 URL 变量使用 MOD_REWRITE 并在不使用时删除空参数

mysql - 使用 REGEXP 进行 SQL 选择返回错误的数据行

javascript - 正则表达式字符串 JavaScript 中的多个匹配 block

python - 在 pydev 上使用 python 自动完成错误?