输入字符串
Arab World,ARB,"Adolescent fertility rate (births per 1000 women ages 15-19)",SP.ADO.TFRT,1960,133.56090740552298
输出字符串
Arab World,ARB,Adolescent fertility rate (births per 1000 women ages 15-19),SP.ADO.TFRT,1960,133.56090740552298
输入字符串
Arab World,ARB,"International migrant stock, total",SM.POP.TOTL,1960,3324685.0
输出字符串
Arab World,ARB,International migrant stock total,SM.POP.TOTL,1960,3324685.0
答案 0 :(得分:0)
最好在这里使用两部分流程。
这个正则表达式会在逗号上拆分你的字符串。嵌套在引号内的任何逗号都将被忽略。此外,周围的引号将在同一操作中被删除。
正则表达式:
(?:^|,)(?=[^"]|(")?)"?((?(1)[^"]*|[^,"]*))"?(?=,|$)
现场演示
https://regex101.com/r/rJ5oF9/1
简单地在分隔逗号
上拆分字符串遍历字符串数组并替换每个
中的逗号正则表达式:,
替换为:没有
现场演示
答案 1 :(得分:0)
使用两个正则表达式可以解决这个问题(我将在这里用perl单行程表示它们)。首先,使用以下命令删除引号之间的第一个逗号(请注意,同一组引号中的后续逗号不会被删除):
s/"((?!").)*?\K,(((?!").)*")/$2/g
下一个正则表达式删除了引号对:
s/"(((?!").)*)"/$1/g
可以实现这些正则表达式的一些代码可以如下:
perl -plane 's/"((?!").)*?\K,(((?!").)*")/$2/g; s/"(((?!").)*)"/$1/g' originalFile.csv > newFile.csv