繁体   English   中英

通过DictWriter(Python)将字典写入CSV文件

[英]Writing a dictionary to a CSV file via DictWriter (Python)

DictWriter似乎对我不起作用。

当前代码:

myfile = open('hashdict.csv', 'wb')
fieldnames = ('md5', 'value')
myWriter = csv.DictWriter(myfile, fieldnames=fieldnames)
headers = dict((n,n) for n in fieldnames)
myWriter.writerow(headers)
for n in dictToSearch:
    myWriter.writerow(n)
myfile.close()

追溯:

Traceback (most recent call last):
  File "hash.py", line 42, in <module>
    myWriter.writerow(n)
  File "C:\Python27\lib\csv.py", line 148, in writerow
    return self.writer.writerow(self._dict_to_list(rowdict))
  File "C:\Python27\lib\csv.py", line 144, in _dict_to_list
    ", ".join(wrong_fields))
ValueError: dict contains fields not in fieldnames: d, 1, a, 5, 0, d, 0, a, 1, 7
, 0, e, 5, e, a, 9, f, e, b, 6, f, 7, 9, 6, 1, 3, 6, 3, f, 6, d, 9

字母数字字符来自MD5哈希,但这仅是我可以告诉您的。 我看了看文档,似乎没有任何意义。 我想做的是从名为dictToSearch的字典中制作一个CSV文件。

在此先感谢您的帮助,如果您需要其他任何信息,请告诉我。

链接到完整代码: http : //pastebin.com/A3E4AJfV

这里缺少的关键信息是:dictToSearch是什么? 我想这有点像{'e2fc714c4727ee9395f324cd2e7f331f':'abcd','098f6bcd4621d373cade4e832627b4f6':'test'}。

如果是这样,那么这里的问题是“ fordict中的n”将n设置为dictToSearch的第一个键-这将是MD5哈希。 然后,writerow(n)将该MD5哈希字符串本身解释为字典,由单字符键和值组成,而不是字符串。

我怀疑您真正想做的是:

for key, value in dictToSearch.items():
    myWriter.writerow({'md5' : key, 'value': value})

它将条目从dictToSearch转换为与您使用的字段名称匹配的自己的字典。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM