在csv文件中编写字典:添加列名

问题描述 投票:-1回答:1

我想添加标题,然后为第一列添加键,为第二列添加值

我怎么能这样做,我试过这个:

d = {}

with open(sys.argv[1], 'r', encoding='utf-8') as csv_file:
    csv_file.readline()
    for line in csv_file:
        token = line.split(';')
        try:
            d[token[0]] = token[1]
        except:
            print(line)
#print(d)


CSV ="\n".join([k+';'+v for k,v in d.items()])
w=csv.DictWriter(open("sortie.csv", "w"), fieldnames =["clé","verbatim","tag","lemme","scorePos","scoreNeu","scoreNeg"],delimiter = ';') 
w.writeheader() 
w.writerow(CSV) 

结果是:


import TreeTagger OK
Traceback (most recent call last):
  File "CSV_dico.py", line 47, in <module>
    w.writerow(CSV)
  File "C:\Users\Emmanuelle\AppData\Local\Programs\Python\Python37-32\lib\csv.py", line 155, in writerow
    return self.writer.writerow(self._dict_to_list(rowdict))
  File "C:\Users\Emmanuelle\AppData\Local\Programs\Python\Python37-32\lib\csv.py", line 148, in _dict_to_list
    wrong_fields = rowdict.keys() - self.fieldnames
AttributeError: 'str' object has no attribute 'keys'
python csv dictionary
1个回答
1
投票

看看DictWriter如何期待它的输入。您试图将整个CSV作为单行传递给它。

实际上,由于您已经生成了整个CSV,因此您只需手动编写标题,然后手动编写行:

with open("sortie.csv", "w") as output:
    output.write("clé;verbatim;tag;lemme;scorePos;scoreNeu;scoreNeg\n")
    output.write(CSV)
© www.soinside.com 2019 - 2024. All rights reserved.