我有一个包含两列且超过6000行的csv文件,并希望将其导出到python中的字典。 这是大文件的一部分:
ENST00000589805,CCCTCCCGGACTCCTCTCCCCGGCCGGCCGGCAAGAGTTTACAA
ENST00000376512,GTTGCCGAGGGGACGGGCCGGGCAGATGCCAAC
ENST00000314332,TTTAAG
我写了这个函数:
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
我尝试了一个小文件并且工作得很好。但当我为我的大文件尝试时,它给出了这个错误:
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
我试图找到解决方案,但没有管理。你们知道怎么解决吗? 顺便说一下,字典就像这样:
{'ENST00000589805':'CCCTCCCGGACTCCTCTCCCCGGCCGGCCGGCAAGAGTTTACAA', 'ENST00000376512': 'GTTGCCGAGGGGACGGGCCGGGCAGATGCCAAC', 'ENST00000314332': 'TTTAAG'}
答案 0 :(得分:0)
最有可能(但不是唯一可能)的原因是如果您的输入文件在最后有一个换行符。这将以您描述的方式中断split()
调用。解决此问题的一种方法如下:
for line in f:
line = line.strip()
if line:
k, v = line.split(',')
answer[k.strip()] = v.strip()
您的输入文件同样可能以其他方式打破您的假设。要解决这个问题,你应该加强代码中的错误检查。
答案 1 :(得分:0)
其中一行或多行可能包含多个逗号。因为您按逗号划分,所以它被分解为&gt; 2变量,但您只指定了两个名称。找到带有额外逗号的行并尝试解决该问题,或者在需要时提供额外的变量名称。