首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >打印文本文件中的一系列行

打印文本文件中的一系列行
EN

Stack Overflow用户
提问于 2017-11-10 03:34:15
回答 4查看 2.8K关注 0票数 0

我有一个文本文件(美国宪法),我只想打印前言。以下是我到目前为止拥有的代码:

代码语言:javascript
运行
复制
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行,这是前言,但它总是返回说索引超出范围……我该如何解决这个问题呢?

EN

回答 4

Stack Overflow用户

发布于 2017-11-10 03:39:03

确保所有内容都处于正确的缩进级别,并且print语句不在for循环中。

你也可以通过列表理解来减少它,使它更清晰。

代码语言:javascript
运行
复制
with open('Constitution.txt') as fhand:
    lines = [line.rstrip("\n") for line in fhand]
print(lines[4:10])
票数 3
EN

Stack Overflow用户

发布于 2017-11-10 03:41:51

您正在循环内执行print(lines[4:10])。因此,将第一行添加到lines,然后打印其中的第4行到第10行-它仍然只包含1行。

将其移出循环。

票数 2
EN

Stack Overflow用户

发布于 2017-11-10 03:39:12

好的,你的代码的问题是,在形成列表之前,你会尝试print从5行到11行。为了澄清,在您发布的代码中,当print(lines[4:10])被执行时,您的lines列表看起来像["THE"]。因此,解释器正确地指出您指定的索引超出了范围,因为列表只包含1项。

你应该像这样修改你的代码:

代码语言:javascript
运行
复制
lines = []
with open('Constitution.txt') as fhand:
    for line in fhand:
        lines.append(line.rstrip('\n'))
print(lines[4:10])

顺便说一句,如果break语句的目的是在读取前11行之后终止读取文件,那么这不是您所做的。您的break语句将在读取第一行结束时执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47210126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档