Python split()在while循环中不生效,拆分文本行生成列表出现死循环
问题根源
死循环由判断条件逻辑错误导致:
- 文件读取到末尾时,
infile.readline()会返回空字符串'' - 对空字符串依次执行
.strip().split()后,会得到空列表[] - 你设置的while循环判断条件为
goals_line != '',空列表和空字符串的比较结果永远为真,因此程序进入无限循环,持续打印空列表。
修正方案
改法1:仅修改循环判断条件(改动最小)
利用Python中空列表的布尔值为False的特性,直接判断列表是否非空即可:
with open(HOTSPUR, 'r') as infile: goals_line = infile.readline().strip().split() print(goals_line) while goals_line: goals_line = infile.readline().strip().split() print(goals_line)
改法2:直接迭代文件对象(更符合Python规范的写法)
Python的文件对象本身是可迭代对象,不需要手动调用readline即可逐行读取内容,代码更简洁:
with open(HOTSPUR, 'r') as infile: for line in infile: goals_line = line.strip().split() print(goals_line)
内容的提问来源于stack exchange,提问作者Jo4368
相关产品推荐
相关产品推荐

