【问题标题】:Creating a dictionary from a given text file (python)从给定的文本文件创建字典(python)
【发布时间】:2015-02-10 15:09:40
【问题描述】:

我需要根据给定的文件创建字典。名为 student_data.txt 的文件内容如下:

Joy - 100  
Rita - 90  
John - 80  
Sheena - 100  
Smith - 100  
Karl - 90  
Andrew - 100  
Klara - 100  
Sarah - 90  
Amy - 80  
Sandy - 100  

我想创建一个字典,使用学生的姓名作为键,分数作为值。

这是我尝试过的:

myDictionary = {}  
myFile = open("student_data.txt", 'r')  
for line in myFile:  
    key, value = line.strip().split('-')  
    myDictionary[key.strip()] = value.strip()

当我编译并运行它时,我收到一条错误消息“ValueError: Needs more than 1 value to unpack.”

【问题讨论】:

    标签: python-3.x for-loop dictionary split strip


    【解决方案1】:

    我认为问题是您文件中的空行。尝试打印您在split 之前阅读的行以获得线索:

    myDictionary = {}  
    myFile = open("a.txt", 'r')  
    for line in myFile:
        fields = line.strip().split('-')
        if len(fields) == 2:
            myDictionary[fields[0].strip()] = fields[1].strip()
    print(myDictionary)
    

    修复了处理空行的代码 - 我们检查是否准确捕获了 2 个字段,只有在这种情况下才更新字典。

    另一种方法是检查该行的内容:

    myDictionary = {}  
    myFile = open("a.txt", 'r')  
    for line in myFile:
        if line.isspace():
            continue
        key, value = line.strip().split('-')
        myDictionary[key.strip()] = value.strip()
    print (myDictionary)
    

    【讨论】:

      【解决方案2】:

      您的代码应该可以工作。您确定文件中没有空行吗?

      试试这个:

      for line in myFile:
          pair = line.split('-')
          myDictionary[pair[0].strip()] = pair[1].strip()
      

      如果失败,您知道文件中的某处有空行,您必须加以说明。

      【讨论】:

      • 我收到一个错误,提示列表索引超出范围。
      • 那么你的文件中某处有一个空行
      • 你知道我将如何解决这个问题吗?
      • 要么从文件中删除空行,要么在处理之前检查以确保该行不为空。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 2017-07-07
      • 1970-01-01
      • 2013-07-13
      • 2012-04-10
      • 2018-03-29
      相关资源
      最近更新 更多