繁体   English   中英

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

[英]error in exporting a file into a dictionary in 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'}

最可能(但不是唯一可能)的原因是,如果输入文件末尾有换行符。 这将以您描述的方式中断split()调用。 解决此问题的一种方法如下:

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

输入文件也有可能以其他方式破坏您的假设。 为了解决这个问题,您应该加强代码中的错误检查。

一行或多行中可能包含多个逗号。 因为要用逗号分隔,所以将其分解为> 2个变量,但是只指定了两个名称。 找到带有多余逗号的行,然后尝试解决该问题,或者在需要时提供一个额外的变量名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM