我有一个CSV文件,数据是这样的:
"asdd","12","good"
但是有些数据没有规范,比如
"name1,name2","34","bad"
如何更换','双引号之间的另一个(例如' |'或' - '等)?
ADD:文件大小几乎达到40M。
答案 0 :(得分:1)
如果我正确理解您的问题,那么以下命令应解决问题
:%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"
答案 1 :(得分:1)
试试这一行:
%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"
答案 2 :(得分:1)
您可以使用我的csv plugin。它提供了许多使用CSV文件的可能性。在您的情况下,您只需使用:NewDelimiter |
使|
成为新的分隔符。
答案 3 :(得分:0)
命令:
:s/","/"|"/g
将使用“|”
替换文档中的每个“,”这会改变:
"Hello","world","foo,bar"
到
"Hello"|"world"|"foo,bar"