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