例如给定mycsv.csv
文件
h1,h2
a,b
c,d
如何使用h2
HTwo
重命名为reader
reader = csv.DictReader(open('mycsv.csv'))
(另外如何用更新的标题写回csv文件。)
使用awk的注意方法也很重要。
答案 0 :(得分: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 :(得分:1)
awk oneliner:
awk -F, -v OFS=, 'NR==1 && $2=="h2" {$2="hTwo"};1' file
以上是非常具体的:它说"如果第一行包含' h2'在第二个字段中,将其更改为' hTwo'
答案 2 :(得分:1)
使用sed
$ sed -i '1s/h2/HTwo/' mycsv.csv
答案 3 :(得分:1)
一种解决方法是使用pop()
reader = csv.DictReader(open('mycsv.csv'))
for d in reader:
d['HTwo'] = d.pop('h2')