我有一个文本文件(美国宪法),我只想打印前言。以下是我到目前为止拥有的代码:
lines = []
with open('Constitution.txt') as fhand:
for line in fhand:
lines.append(line.rstrip('\n'))
print(lines[4:10])
break
如果在代码的第5行输入print(lines[0])
,它就可以工作,并且只打印文本的第一行,这就是单词" the“。但我希望它打印5-11行,这是前言,但它总是返回说索引超出范围……我该如何解决这个问题呢?
发布于 2017-11-10 03:39:03
确保所有内容都处于正确的缩进级别,并且print语句不在for循环中。
你也可以通过列表理解来减少它,使它更清晰。
with open('Constitution.txt') as fhand:
lines = [line.rstrip("\n") for line in fhand]
print(lines[4:10])
发布于 2017-11-10 03:41:51
您正在循环内执行print(lines[4:10])
。因此,将第一行添加到lines
,然后打印其中的第4行到第10行-它仍然只包含1行。
将其移出循环。
发布于 2017-11-10 03:39:12
好的,你的代码的问题是,在形成列表之前,你会尝试print
从5行到11行。为了澄清,在您发布的代码中,当print(lines[4:10])
被执行时,您的lines
列表看起来像["THE"]
。因此,解释器正确地指出您指定的索引超出了范围,因为列表只包含1项。
你应该像这样修改你的代码:
lines = []
with open('Constitution.txt') as fhand:
for line in fhand:
lines.append(line.rstrip('\n'))
print(lines[4:10])
顺便说一句,如果break
语句的目的是在读取前11行之后终止读取文件,那么这不是您所做的。您的break
语句将在读取第一行结束时执行。
https://stackoverflow.com/questions/47210126
复制相似问题