将文本文件读入字典

时间:2014-10-03 16:14:12

标签: python file python-3.x dictionary

我的代码:

fd = open('C:\Python27\\alu.txt', 'r')
D = dict(line.split("\n") for line in fd)

显示以下错误

traceback (most recent call last):
  File "C:\Users\ram\Desktop\rest_enz3.py", line 8, in <module>
    D = dict(line.split("\n") for line in fd)
ValueError: dictionary update sequence element #69 has length 1; 2 is required

3 个答案:

答案 0 :(得分:1)

您在line中找到的唯一换行符将是最后一行,因此line.split("\n")将返回长度为1的列表。也许您打算使用不同的分隔符。如果您的文件看起来像......

lorem:ipsum
dolor:sit

然后你应该做

D=dict(line.strip().split(":") for line in fd)

答案 1 :(得分:0)

正如Kevin上面指出的那样,line.split(“\ n”)有点奇怪,但是文件可能只是一个字典键列表?

无论如何,你得到的错误意味着line.split(“\ n”)只返回一个元素(换句话说,该行缺少尾随换行符)。例如:

"Key1\n".split("\n") returns ["Key1", ""]

,而

"Key1".split("\n") returns ["Key1"]


dict([["key1", ""],["key2", ""]])

很好,而

dict([["key1, ""],["key2"]])

返回引用的错误

可能就像编辑相关文件并在文件末尾添加新行一样简单。

答案 2 :(得分:0)

文件示例:alu.txt

GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA
TCACGAGGTCAGGAGATCGAGACCATCCTGGCTAACACGGTGAAACCCCGTCTCTACTAA
AAATACAAAAATTAGCCGGGCGTGGTGGCGGGCGCCTGTAGTCCCAGCTACTCGGGAGGC
TGAGGCAGGAGAATGGCGTGAACCCGGGAGGCGGAGCTTGCAGTGAGCCGAGATCGCGCC

阅读文件

with open('C:\\Python27\\alu.txt', 'r') as fp:
    dna = {'Key %i' % i: j.strip() for i, j in enumerate(fp.readlines())}

for key, value in dna.iteritems():
    print key, ':', value

Key 1 : GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA
Key 2 : TCACGAGGTCAGGAGATCGAGACCATCCTGGCTAACACGGTGAAACCCCGTCTCTACTAA
Key 3 : AAATACAAAAATTAGCCGGGCGTGGTGGCGGGCGCCTGTAGTCCCAGCTACTCGGGAGGC

如果您正在使用Python 3,则以这种方式更改迭代流程

for key, value in dna.items():
    print(key, ':', value)