将文件导出到python中的字典时出错

时间:2016-12-12 16:59:22

标签: python

我有一个包含两列且超过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'}

2 个答案:

答案 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变量,但您只指定了两个名称。找到带有额外逗号的行并尝试解决该问题,或者在需要时提供额外的变量名称。