我正在嘗試標準化一組文本檔案,其中包含由管道(“|”)分隔的值串列,這些值當前對于帶有尾隨零的值具有不同的小數位。
這似乎是正則運算式應該能夠處理的事情,但我正在努力從哪里開始。我找到了可以替換兩組子字串之間的任何值的示例,但沒有找到僅在其之間的值都是相同字符時才匹配的示例。
下面的 Python 代碼顯示了我正在嘗試實作的一個最小示例(如果替換成功,斷言應該在哪里通過)。任何幫助將非常感激。
import re
str_in = '4|5|0.00000000|'
expected_str_out = '4|5|0.0|'
str_out = re.sub('0.(.*?)\|', '0.0|', s)
assert str_out == expected_str_out
uj5u.com熱心網友回復:
您可以使用
import re
str_in = '4|5|0.00000000|'
expected_str_out = '4|5|0.0|'
str_out = re.sub(r'(?<![^|])0 \.0 (?![^|])', '0.0', str_in)
print( str_out == expected_str_out )
請參閱在線 Python 演示和正則運算式演示。
正則運算式匹配
(?<![^|])- 字串的開頭或|0 \.0- 一個或多個0字符,.以及一個或多個0s(?![^|])- 字串結尾,或|.
如果您需要處理 , 之類的情況,2.2222您可以使用333.3335555555.55
(?<![^|])(\d)\1*\.\1 (?![^|])
替換為\1.\1,請參閱正則運算式演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/476497.html
