我的字典包含字符名称及其偏移量,如下所示:
{'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
除了使用 fieldnames
之外,我不确定如何包含标题 Id
和 Label
以及如何实现行的枚举,在这里我尝试应用 i = 0
并尝试在最后一行中找到某个位置来应用 i += 1
但它给了我错误警告 syntax错误
有什么改进代码的想法吗?
提前致谢!
最佳答案
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)))
强制按字母顺序排列。
关于python - 行枚举、制表符分隔的 csv 文件的列表字典的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52368027/