我有一个CSV文件,数据如下:
"asdd","12","good"但是有些数据是不受监管的,比如
"name1,name2","34","bad"如何将“,”替换为另一词(如“\”或“-”等)在双引号之间?
加:文件大小接近40M。
发布于 2013-10-20 17:41:12
你可以用我的csv插件。它提供了许多处理CSV文件的可能性。在您的示例中,只需使用:NewDelimiter |使|成为新的分隔符。
发布于 2013-10-20 16:57:57
如果我正确地理解了您的问题,那么下面的命令将解决这个问题。
:%s/\v([^"]),([^"])/\1-\2/g它将用,替换没有被"包围的所有-。
这里假设所有csv数据都被"包围。
样本输入:
"name1,name2","34","bad"
"asdd","12","good"
"name1,name2,name3","34","bad"输出:
"name1-name2","34","bad"
"asdd","12","good"
"name1-name2-name3","34","bad"发布于 2013-10-20 17:11:44
试试这句话:
%s/[^"]\zs,\ze[^"]/-/g如果您想在,之前和之后处理(删除)空格,例如:
"name1, name2","34","bad"
"asdd","12","good"
"name1, name2 ,name3","34","bad"你可以执行:
%s/[^"]\zs\s*,\s*\ze[^"]/-/g它将将上述示例更改为:
"name1-name2","34","bad"
"asdd","12","good"
"name1-name2-name3","34","bad"https://stackoverflow.com/questions/19479981
复制相似问题