簡體   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