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