row-enumerated、tab-delimited csv 文件的列表字典的键
Keys of a dictionary of lists to a row-enumerated, tab-delimited csv file
我的包含字符名称及其偏移量的词典如下所示:
{'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。
tab-delimitedcsv 文件应如下所示:
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
之外,我不确定如何包含 headers Id
和 Label
以及如何实现行的枚举,在这里我试图应用 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)))
强制按字母顺序排列。
我的包含字符名称及其偏移量的词典如下所示:
{'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。
tab-delimitedcsv 文件应如下所示:
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
之外,我不确定如何包含 headers Id
和 Label
以及如何实现行的枚举,在这里我试图应用 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)))
强制按字母顺序排列。