Schreiben Sie ein Wörterbuch, um eine CSV-Datei über DictWriter (Python)
DictWriter scheint einfach nicht zu funktionieren für mich.
Aktuelle code:
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:
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
Den alphanumerischen Zeichen werden aus einem MD5-hash, aber das ist alles, was ich Ihnen sagen kann. Ich habe die Dokumentation und kann nicht scheinen, um Sinn zu kommen. Was ich versuche zu tun ist, eine CSV-Datei aus dem Wörterbuch genannt dictToSearch.
Vielen Dank im Voraus für jede Hilfe, und lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.
Link zum vollständigen code: http://pastebin.com/A3E4AJfV
- Wörterbuch Verstehens gibt, so dass Sie tun können
{n: n for n in fieldnames}
. - Und zeigt uns
dictToSearch
helfen würde. possibleValues = oneChar + twoChar + threeChar + fourChar
hashed_list = (str(hashlib.md5(char).hexdigest()) for char in possibleValues)
dictToSearch = dict(itertools.izip(hashed_list, possibleValues))
Nichts zu aufregend. oneChar und seinesgleichen sind die Kombinationen von Zeichen bis zu 4.- dictToSearch = {hashlib.md5(char).hexdigest(): char für char in possibleValues -} vielleicht ein bisschen eleganter ist: die hexdigest () - Ergebnis ist bereits ein string, und ein Wörterbuch, Verständnis (wie oben erwähnt) bedeutet, dass Sie nicht brauchen, izip.
- Scheint, dass ich wirklich brauchen, um Lesen Sie mehr auf Wörterbuch Verständnis... vielen Dank! Heißt das auch ich kann loswerden hashed_list? Zu sehen, wie das ist, nicht mehr, oder so scheint es.
- Ja, das ist richtig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Schlüssel fehlende Stück von Informationen hier: was ist dictToSearch? Ich denke, dass es so etwas wie {'e2fc714c4727ee9395f324cd2e7f331f': 'abcd', '098f6bcd4621d373cade4e832627b4f6': 'test'}.
Wenn ja, das Problem hier ist, dass "n in dictToSearch" setzt Sie n, um den ersten Schlüssel von dictToSearch - die werden als MD5-hash. writerow(n) interpretiert dann, dass die MD5-hash-string als ein Wörterbuch in seinem eigenen Recht, bestehend aus Einzel-Zeichen-Schlüssel und Werte, nicht als string.
Ich vermute, dass das, was Sie wirklich wollen, zu tun ist:
wandelt einen Eintrag aus dictToSearch in seine eigenen Wörterbuch-passend zu den Feldnamen, den Sie verwenden.