【发布时间】:2019-02-21 09:29:06
【问题描述】:
包含字符名称及其偏移量的字典如下所示:
{'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)]}
我想要的输出是字典的键(字符名称)。
另外,第一列应该枚举字符名称作为它们的ID,从0开始。
制表符分隔的 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 以及如何实现行的枚举,这里我尝试应用 i = 0 并试图找到某个地方最后一行应用i += 1,但它给了我错误警告syntax error
有什么改进代码的想法吗?
提前致谢!
【问题讨论】:
-
csv.DictWriter()而不是csv.writer -
@Rakesh 当我这样做时,我得到了错误:
AttributeError: 'generator' object has no attribute 'keys'
标签: python csv dictionary key enumerate