2016-01-28 46 views
0

例如給予mycsv.csv文件如何CSV DictReader重命名鍵/頭

h1,h2 
a,b 
c,d 

如何h2reader

reader = csv.DictReader(open('mycsv.csv')) 

(此外重命名到HTwo如何寫csv文件回來的更新的標題)。

注意方法用awk也很重要。

+0

這就是你想幹什麼?我問,因爲'awk'會是一個更簡單的解決方案。 – Brian

+0

@布萊恩awk是非常有效的答案,尤其是如果它證明更簡單...謝謝! – elm

回答

3

對於一個簡單的CSV文件(一個不包含引用字符串),awk是一個很好的解決方案,Brian的答案將正常工作。如果您的CSV文件包含引述本身包含逗號,像這樣的字符串:

h1,h2 
"this, is, value, 1",value2 

...然後awk會翻倒。

如果你想在Python中做到這一點,沒有理由使用DictReader。像這樣將工作:

import csv 

with open('mycsv.csv') as infd, open('mycsv.out', 'w') as outfd: 
    reader = csv.reader(infd) 
    writer = csv.writer(outfd) 

    # read the header 
    header = next(reader) 

    # modify the column title 
    header[1] = 'hTwo' 

    # write the new header out 
    writer.writerow(header) 

    # copy all other rows unmodified 
    for row in reader: 
    writer.writerow(row) 

# and then rename mycsv.out to mycsv.csv if you wish. 
1

AWK oneliner:

awk -F, -v OFS=, 'NR==1 && $2=="h2" {$2="hTwo"};1' file 

以上是非常具體的:它說「如果第一行包含在第二場‘H2’,它更改爲‘hTwo’」

1

就地置換sed

$ sed -i '1s/h2/HTwo/' mycsv.csv