python - python中的拆分方法正在输出索引错误
问题描述
该程序接收一个 txt 文件并打印出每行的第一个单词。它工作得很好,但最后它打印出这个错误
Traceback (most recent call last):
File "C:/Users/vipku/PycharmProjects/untitled/test.py", line 7, in <module>
print(f.readline().split()[0])
IndexError: list index out of range
这是我写的代码
f = open("example.txt", "r")
for line in f:
for first in line:
print(f.readline().split()[0])
解决方案
请注意:
f = open("example.txt", "r")
for line in f:
for first in line:
实际上意味着:
open file "example.txt" for reading
for every line in that file:
for every character in that line:
因此,这意味着您执行readline
的行数是实际行数的更多倍-因此,您str
从得到空readline
,正如文档所说,如果 f.readline() 返回一个空字符串,则已到达文件末尾,而表示空行by '\n',一个只包含一个换行符的字符串。
for
如果要逐行处理,使用 single 就足够了。您应该检查空行(由单个换行符组成的行 -.split
在它们处使用会导致空列表),因此解决方案可能如下所示:
f = open("example.txt", "r")
for line in f:
words = line.split()
if words:
print(words[0])
f.close()
words
我利用空列表是 False-y 和非空列表 True-y 的事实,因此仅当至少有 1 个元素时才会执行打印。请注意,文件应在使用后关闭。您可能会隐式执行此操作,也可以使用with open
... 方法。您可以从这个 realpython 教程中了解后者。
推荐阅读
- c# - 如何通过名称动态获取对象引用?
- r - 将一个data.frame中的值分配给R中另一个data.frame的特定列?
- amazon-web-services - 在集群中启用容量提供程序时,为什么需要在 Auto Scaling 组中启用实例缩减保护?
- excel - 将列表框第二列的值复制到工作表 Excel VBA
- python - 从 numpy 数组中解复用值
- mysql - 为什么在 SELECT DISTINCT 查询中出现“重复条目”错误?
- php - 返回页面后php动态选择选项设置为默认值(表单提交后重置选择选项)
- python - 加载回文件后,matplotlib 图中的隐藏轴可见
- safari - Mac Safari (12 / 13) 会在 5-10 分钟后自动失去声音
- c - 为什么我的代码没有生成 1 到 N 之间的随机数字序列?不产生文件。我的代码有什么错误?我究竟做错了什么?