例如給予mycsv.csv
文件如何CSV DictReader重命名鍵/頭
h1,h2
a,b
c,d
如何h2
與reader
reader = csv.DictReader(open('mycsv.csv'))
(此外重命名到HTwo
如何寫csv文件回來的更新的標題)。
注意方法用awk也很重要。
例如給予mycsv.csv
文件如何CSV DictReader重命名鍵/頭
h1,h2
a,b
c,d
如何h2
與reader
reader = csv.DictReader(open('mycsv.csv'))
(此外重命名到HTwo
如何寫csv文件回來的更新的標題)。
注意方法用awk也很重要。
對於一個簡單的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.
AWK oneliner:
awk -F, -v OFS=, 'NR==1 && $2=="h2" {$2="hTwo"};1' file
以上是非常具體的:它說「如果第一行包含在第二場‘H2’,它更改爲‘hTwo’」
就地置換sed
$ sed -i '1s/h2/HTwo/' mycsv.csv
這就是你想幹什麼?我問,因爲'awk'會是一個更簡單的解決方案。 – Brian
@布萊恩awk是非常有效的答案,尤其是如果它證明更簡單...謝謝! – elm