[英]Regex replace in Python picking a specific substring
這是我想要發生的事情:
input = "asdsad,200200-12964,0009,""TREASURY SETTLEMENT NON-COMPLIANCE ASSESSMENT FOR CPD2020-01-21 USD 589,037.17"" 0.00000000,1.000000"
output = "asdsad,200200-12964,0009,""TREASURY SETTLEMENT NON-COMPLIANCE ASSESSMENT FOR CPD2020-01-21 USD 589.037.17"" 0.00000000,1.000000"
如何使用正則表達式在 Python 中的""...589,037.17...""
之間將逗號 ( ,
) 更改為點 ( .
)。
Extra: 589,037.17 => 589.037.17
我試過:
print(re.sub(r'(?<=\d),', '.', input))
但我的輸出是:
output = "asdsad,200200-12964.0009,""TREASURY SETTLEMENT NON-COMPLIANCE ASSESSMENT FOR CPD2020-01-21 USD 589.037.17"" 0.00000000,1.000000"
首先,不要調用變量input
,因為它會覆蓋內置函數input()
。 此外,您重復的字符串只是 Python 中的一個字符串。
i = 'asdsad,200200-12964,0009,TREASURY SETTLEMENT NON-COMPLIANCE ASSESSMENT FOR CPD2020-01-21 USD 589,037.17 0.00000000,1.000000'
為了解決您的具體情況,您可以在逗號前的價格的第一位匹配國家代碼后跟 3 個數字。 這適用於此,但對於任何國家/地區代碼和任何價格可能都不夠通用,因為后視必須具有固定寬度。
print(re.sub(r'(?<=USD \d{3}),', '.', i))
我會對國家代碼和空格使用后視,然后將數字的第一位分組並用反向引用替換它。
print(re.sub(r'(?<=[A-Z]{3} )(\d+),', r'\1.', i))
import re
input = "asdsad,200200-12964,0009,""TREASURY SETTLEMENT NON-COMPLIANCE ASSESSMENT FOR CPD2020-01-21 USD 589,037.17"" 0.00000000,1.000000"
print(input)
print(re.sub(r'USD (\d+),(\d+)', r'USD \1.\2', input))
輸出:
asdsad,200200-12964,0009,TREASURY SETTLEMENT NON-COMPLIANCE ASSESSMENT FOR CPD2020-01-21 USD 589,037.17 0.00000000,1.000000
asdsad,200200-12964,0009,TREASURY SETTLEMENT NON-COMPLIANCE ASSESSMENT FOR CPD2020-01-21 USD 589.037.17 0.00000000,1.000000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.