2016-04-26 69 views
0

我有類似如下的CSV:如何更換用分號逗號而不是引號內

"blah blah, foo bar", 1, 454, ok, eng 
blah blah foo bar, 2, 21, ko, esp 
... 

我需要更換字段之間逗號到分號,所以我可以拆分正確CSV。但是,不要那些內心深處的人。

我需要或正則表達式o一個小腳本(python,groovy,bash ...)來解決這個問題。

+0

你需要在'bash'或'python'解決方案? – anubhava

+1

同意tim_yates。這是一個[XY問題](http://www.perlmonks.org/?node_id=542341):你說你想把逗號改成分號,但你真正想做的是解析一個CSV文件,而你試圖將逗號更改爲分號以作爲此操作的一部分。你應該改用Python的'csv'模塊。儘管如此,道具將CSV位置入您的問題!否則,我們只是告訴你如何做替代,你仍然在浪費你的時間重新發明輪子。 – kindall

回答

2

考慮。演示:

from csv import reader, writer 
with open('input.csv') as inp, open('output.csv', 'w') as out: 
    writer(out, delimiter=';').writerows(reader(inp)) 

文件內容:

$ cat input.csv 
"blah blah, foo bar", 1, 454, ok, eng 
blah blah foo bar, 2, 21, ko, esp 
$ cat output.csv 
blah blah, foo bar; 1; 454; ok; eng 
blah blah foo bar; 2; 21; ko; esp 
1
import csv 

infile = open("inputfile.csv", "r") 
outfile = open("outputfile.csv", "w") 

csvReader = csv.reader(infile) 

for line in csvReader: 
    outfile.write(";".join(line) + "\n") 

infile.close() 
outfile.close() 

測試關於Python 2.7和3.5

輸出上的例子:使用Python的csv模塊

blah blah, foo bar; 1; 454; ok; eng 
blah blah foo bar; 2; 21; ko; esp 
相關問題