【问题标题】:Why is my list returning empty when reading a file?为什么我的列表在读取文件时返回空?
【发布时间】:2022-01-09 13:43:00
【问题描述】:

我正在做一个项目,该项目读取一个文件,其中每个文件的开头行都有一个字母,表示该行正在做什么。例如,如果该行以“p”开头,则该行包含一个坐标。

我正在尝试将所有以 p 开头的行添加到他们自己的列表中。然后将坐标变成元组。这是我正在运行的代码:

pList=[]
if [0] in makeList is 'p':
    pList=[tuple(map(int, l.split()[2:3])) for l in makeList.readlines()]
    pList.append(line.strip())

我的问题是当我运行诊断打印时,列表返回为空。我是编程新手,所以我很难解决这个问题。谢谢!

【问题讨论】:

  • 疑难解答提示 - 将if 语句减少到一个条件,并将条件代码替换为print("condition met") 语句以查看它是否被命中。如果不是,请研究原因,如果是 - 再添加一条语句,看看它是否仍然有效。迭代直到修复。

标签: python list file if-statement


【解决方案1】:

您的复合comparison chaining(谢谢@KellyBundy)从未遇到过:

if [0] in makeList .... :    --> True or False 

if makeList is 'p':`  --> False

您使用makeList.readlines() 暗示makeList 是您的文件描述符,这使您的情况更加荒谬。

通常你会这样做:

with open(filename) as f:
    for line in f:
        if line[0] == 'p': # or line.startswith(...) - do not compare with IS
            # split line, convert to int, make tuple, add to list

【讨论】:

  • @Kelly thx,已修复
  • 对于还不知道的人来说可能不太清楚,但我想通过链接他们可以弄清楚。无论如何,是的,无论makeList 是什么,这两种比较中的一种都是错误的。
  • 愚蠢的小挑战:了解如何使 [0] in makeList and makeList is 'p' 为真。
猜你喜欢
  • 2017-01-25
  • 2022-01-11
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多