簡體   English   中英

正則表達式在 Python 中替換選擇特定的子字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM