1

私はCSVファイルを持っており、データは次のようなものです:

"asdd","12","good"

しかし、一部のデータは規制されていません。

"name1,name2","34","bad"

二重引用符の間の「,」を別のもの (「|」や「-」など) に置き換える方法は?

追加: ファイル サイズはほぼ 40M です。

4

4 に答える 4

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"
于 2013-10-20T17:11:44.007 に答える
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"
于 2013-10-20T16:57:57.087 に答える