用dot看前瞻断言

时间:2014-02-11 22:00:00

标签: python regex

我需要从字符串中删除尾随零表示浮点值x.xx

我尝试使用re.sub但没有效果

re.sub("(?=\.[0-9])0", "", "1.23, 2.50, 2.00, 2.30, 5.03")

更新

在我的特定情况下,点后面只有两位数。我需要删除两个零。目前,使用 Ashwini Chaudhary Porges 帮助我使用\.00|(?<=\.[0-9])0可能更好的一个表达式存在。在点不是我的目标之前删除零。

同样有趣的是我可以看到一些针对不同数量的零的一般解决方案,而不仅仅是两个。

2 个答案:

答案 0 :(得分:4)

你应该使用lookbehind断言而不是先行:

>>> re.sub("(?<=\.[0-9])0", "", "1.23, 2.50, 2.00, 2.30, 5.03")
'1.23, 2.5, 2.0, 2.3, 5.03'

(?<=\.[0-9])0

Regular expression visualization

Debuggex Demo

答案 1 :(得分:3)

你想要后卫,而不是前瞻。在您当前的表达式\.[0-9]尝试与0同时匹配,这将永远不会发生。

尝试:"(?<=\.[0-9])0"