我的代码:
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
答案 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)