Python 仅在特定位置删除逗号

Python 仅在特定位置删除逗号,python,regex,Python,Regex,我有一个文件,其中是逗号分隔的,但数字也使用逗号分隔。例如: 01-01-2010,a,""0.0"",c,d,""1,234,567.00"",1,2,3,4 数字在双引号中,或者 01-01-2010,a,""3,123.00"",c,d,""1,234,567.00"",1,2,3,4 是否有一个简单的正则表达式,使用Python的re.sub只删除数字中的逗号?换句话说,我希望转换成 01-01-2010,a,0.0,c,d,1234567.00,1,2,3,4 01-01-2010

我有一个文件,其中是逗号分隔的,但数字也使用逗号分隔。例如:

01-01-2010,a,""0.0"",c,d,""1,234,567.00"",1,2,3,4
数字在双引号中,或者

01-01-2010,a,""3,123.00"",c,d,""1,234,567.00"",1,2,3,4
是否有一个简单的正则表达式,使用Python的
re.sub
只删除数字中的逗号?换句话说,我希望转换成

01-01-2010,a,0.0,c,d,1234567.00,1,2,3,4
01-01-2010,a,3123.00,c,d,1234567.00,1,2,3,4
然后最后使用
.split()
拆分为列


因此,我尝试的一些想法是
re.sub(“+\d+,\d+“+”,?,s)
如果
s
是有问题的字符串,但这似乎是一个不完整的解决方案。

您可以使用
re.findall

import re
s = '01-01-2010,a,""0.0"",c,d,""1,234,567.00"",1,2,3,4'
new_data = ','.join([i.replace(',', '') for i in re.findall('(?<="")[,\d\.]+(?="")|[\w\d\-]+', s)]) 

对于纯正则表达式解决方案,可以使用

""|,(?=(?:(?!"").)*?"",)
并替换为空字符串

它与“
”匹配,或者与逗号匹配,逗号后面紧跟着“
”、
,从而确保逗号位于“
节中

str = '01-01-2010,a,""0.0"",c,d,""1,234,567.00"",1,2,3,4'
re.sub(r'""|,(?=(?:(?!"").)*?"",)', '', str)

如果
s也可以出现在字符串的末尾,则使用
(?=,|$)

编辑@CertainPerformanceMetry此正则表达式
(?)?
str = '01-01-2010,a,""0.0"",c,d,""1,234,567.00"",1,2,3,4'
re.sub(r'""|,(?=(?:(?!"").)*?"",)', '', str)