2014-02-11 85 views
1

我需要刪除尾隨字符串零表示浮點值x.xx與點式斷言

我嘗試使用re.sub但沒有效果

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

UPDATE

在我的具體情況點後只有兩位數字。我需要刪除兩個零。 With Ashwini Chaudhary and Porges幫助目前我使用\.00|(?<=\.[0-9])0可能更好一個表達式存在。在點之前刪除零不是我的目標。

對於我來說,看到一些通用解決方案不僅適用於兩個零的各種數量的零也是有趣的。

+0

點後面總會有兩個數字嗎?如果兩個數字都是零,你想保留第一個數字還是去掉點? (也就是說,2.00應該變成2.0還是2?)在點之前總會有至少一個數字嗎? (也就是說,我們可以期望看到一個像'.12'這樣的數字,還是總是顯示爲'0.12'?) –

+0

@AlanMoore,我已經更新了我的問題 – triclosan

回答

4

您應該使用向後斷言沒有前瞻:

>>> 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

+0

debuggex.com很棒 – triclosan

3

你想回顧後,預讀不。在您當前的表達式\.[0-9]正在嘗試與0同時匹配,而這絕不會發生。

嘗試:"(?<=\.[0-9])0"