Python中选择特定子字符串的正则表达式替换
以下是我希望发生的事情:Python中选择特定子字符串的正则表达式替换,python,Python,以下是我希望发生的事情: 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-
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中“…589037.17…”
之间的逗号(,
)更改为点(
)
Extra: 589,037.17 => 589.037.17
我试过:
print(re.sub(r'(?<=\d),', '.', input))
首先,不要调用变量
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个数字。这是可行的,但对于任何国家/地区代码和任何价格来说,可能都不够通用,因为look behind必须是固定宽度的
print(re.sub(r'(?<=USD \d{3}),', '.', i))
print(re.sub(r')(?
输出:
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
您可以通过此链接进行记录。您得到的是上面提到的输出,真正的输出是什么?很难看到,但第一位有一个点改变了,OP只想在价格上改变它。
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