【问题标题】:Reading textfile into dictionary将文本文件读入字典
【发布时间】:2014-10-03 16:14:12
【问题描述】:

我的代码:

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

【问题讨论】:

  • 这个怎么样? D = dict(line.strip().split(None, 1) for line in fd)
  • 您能否提供一个示例文件,就像您要阅读的文件一样?
  • 它是一个 DNA 文件,如 ACGTCGCAGCAGACTAGATACGACT
  • 这就是文件中的全部内容?只有那四个字母,没有别的?没有换行符什么的?
  • 看看here。或许能帮到你!

标签: python file python-3.x dictionary


【解决方案1】:

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

lorem:ipsum
dolor:sit

那你应该这样做

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

【讨论】:

    【解决方案2】:

    正如上面的 Kevin 所指出的, line.split("\n") 有点奇怪,但也许该文件只是字典键的列表?

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

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

    同时

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

    很好,而

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

    返回你引用的错误

    这可能就像编辑有问题的文件并在文件末尾添加一个新行一样简单。

    【讨论】:

      【解决方案3】:

      文件示例: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)
      

      【讨论】:

      • 它在 dna.iteritems() 中显示键、值的错误:AttributeError: 'dict' object has no attribute 'iteritems'
      • 好吧,我不明白你使用的是 Python 3
      猜你喜欢
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-26
      • 1970-01-01
      相关资源
      最近更新 更多