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)