我的字典包括字符名称和偏移量,如下所示:
{'Amestris': [(2247, 2255)],
'Beda': [(3266, 3270)],
'Fuery': [(2285, 2290),
(2380, 2385),
(2686, 2691),
(2723, 2728),
'Gloria': [(1565, 1571)],
'Hawkeye': [(22, 29),
(832, 839),
(999, 1006),
(1119, 1126),
(1927, 1934),
(3007, 3014),
(4068, 4075)]}
我想要的输出将是字典的键(字符名称)。
此外,第一列应该从0
开始枚举字符名称作为它们的ID。
制表符分隔的csv文件应如下所示:
Id Label
0 Amestris
1 Beda
2 Fuery
3 Gloria
4 Hawkeye
到目前为止,我已达到这一点:
import csv
import pickle
exmen = pickle.load(open("exmen.p", "rb"))
with open('mycsvfile.csv', 'w') as f:
i = 0
fieldnames = ['Id', 'Label']
w = csv.writer(f, delimiter=' ', fieldnames=fieldnames)
w.writeheader()
w.writerow(i(dict(fieldnames, (key))) for key in exmen)
我收到此错误消息:
line 28, in <module>
w = csv.writer(f, delimiter=' ', fieldnames=fieldnames)
TypeError: 'fieldnames' is an invalid keyword argument for this function
我不知道如何包括标题Id
和Label
除了使用fieldnames
以及如何实现行的enmuerating,在这里我尝试应用i = 0
并试图找到最后一行的某处应用i += 1
但它给了我错误警告syntax error
任何改进代码的想法?
提前致谢!
fieldnames
只是csv.DictWriter
的一个参数,你在这里不需要。你可以尝试一下。沿着以下几行,使用csv.writer
:
with open('mycsvfile.csv', 'w') as f:
w = csv.writer(f, delimiter='\t') # tab delimited
w.writerow(['Id', 'Label']) # just write header row
w.writerows(enumerate(exmen)) # write (id, key) rows
如果exmen
是常见的dict
,则无法保证按键的顺序。你可以做:
w.writerows(enumerate(sorted(exmen)))
强制执行字母顺序。