2016-12-12 4 views
0

Ich habe eine CSV-Datei mit zwei Spalten und mehr als 6000 Zeilen und möchte es in ein Wörterbuch in Python exportieren. hier ist ein Teil der großen Datei:Fehler beim Exportieren einer Datei in ein Wörterbuch in Python

ENST00000589805,CCCTCCCGGACTCCTCTCCCCGGCCGGCCGGCAAGAGTTTACAA 
ENST00000376512,GTTGCCGAGGGGACGGGCCGGGCAGATGCCAAC 
ENST00000314332,TTTAAG 

ich diese Funktion schrieb:

def file_to_dict(filename): 
    f = open(filename, 'r') 
    answer = {} 
    for line in f: 
     k, v = line.strip().split(',') 
     answer[k.strip()] = v.strip() 
    return answer 

versuchte ich, dass für eine kleine Datei und perfekt gearbeitet. aber als ich versuchte, das für meine große Datei, es diesen Fehler gab:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 5, in file_to_dict 
ValueError: too many values to unpack 

Ich habe versucht, die Lösung zu finden, aber nicht verwalten. Weißt du, wie man es löst? BTW, würde das Wörterbuch so aussehen:

{'ENST00000589805':'CCCTCCCGGACTCCTCTCCCCGGCCGGCCGGCAAGAGTTTACAA', 'ENST00000376512': 'GTTGCCGAGGGGACGGGCCGGGCAGATGCCAAC', 'ENST00000314332': 'TTTAAG'} 
+1

Sie gehen davon aus, dass es in jeder Zeile Ihrer Textdatei nur ein Komma gibt - ist das notwendigerweise wahr? – asongtoruin

+2

Mögliches Duplikat von [Wie kann ich ValueError beheben: Zu viele Werte zum Entpacken "in Python?] (Http://stackoverflow.com/questions/17403371/how-can-i-fix-valueerror-too-many-values- to-unpack-in-python) – asongtoruin

+0

Hinweis: 'k, v =" a, b, c ".split (", ")' löst den gleichen Fehler aus, wie von Ihnen in Frage. –

Antwort

0

Die wahrscheinlichste (aber nicht die einzig mögliche) Ursache ist, dass Sie eine neue Zeile am Ende, wenn die Eingabedatei haben. Dies würde den split() Anruf in der Weise brechen, die Sie beschreiben. Eine Möglichkeit, dies zu beheben, ist wie folgt:

for line in f: 
    line = line.strip() 
    if line: 
     k, v = line.split(',') 
     answer[k.strip()] = v.strip() 

Ebenso ist es möglich, dass Ihre Eingabedatei bricht Ihre Annahmen auf andere Weise. Um dies zu beheben, sollten Sie die Fehlerkorrektur in Ihrem Code verbessern.

+0

' k, v = [] 'würde einen Fehler auslösen, der besagt' nicht genug Werte zum Entpacken' wo als 'k, v = [1,2,3] 'hebt einen hervor, der besagt, dass zu viele Werte zu entpacken sind, so dass leere Zeilen nicht den Fehler verursachen, den der OP erhält. –

0

Eine oder mehrere Zeilen haben wahrscheinlich mehr als ein Komma. Da Sie durch Kommas trennen, wird es in> 2 Variablen aufgeteilt, aber Sie haben nur zwei Namen angegeben. Suchen Sie die Zeile mit dem zusätzlichen Komma und versuchen Sie, das Problem zu beheben, oder geben Sie bei Bedarf einen zusätzlichen Variablennamen an.

Verwandte Themen