python - 仅删除特定位置的逗号

标签 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,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)]) 

输出:

'01-01-2010,a,0.0,c,d,1234567.00,1,2,3,4'

关于python - 仅删除特定位置的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52398043/

相关文章:

python - 转换字典键数据类型

Javascript正则表达式匹配单词与斜线

python - 测试列表是否包含某个范围内的数字

python - 如何在 python 中使用 numba.jit 将计算值传递给列表排序?

PHP正则表达式在mysql中检查名称包含重音字母并且名称长度大于5

regex - 如何从 Google 表格中的文本中提取具有多个小数点的数字?

c# - 检查斜杠的字符串

java - 在java中使用枚举检测卡类型时遇到问题

python - BNF 文法符号拆分的正则表达式

python - 在 Python 中,为什么为没有定义父类(super class)的类调用 super() 函数不是错误?