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.

InformationsquelleAutor dantdj | 2013-02-03
Schreibe einen Kommentar