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

Python 打印文本文件中的一系列行,python,Python,我有一个文本文件(美国宪法),我只想打印序言。以下是我目前掌握的代码: lines = [] with open('Constitution.txt') as fhand: for line in fhand: lines.append(line.rstrip('\n')) print(lines[4:10]) break 如果在代码I的第5行键入print(第[0]行],它将工作,并仅打印文本的第一行,即单词“the”。但我希望它打印第

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

lines = []
with open('Constitution.txt') as fhand:
    for line in fhand:
        lines.append(line.rstrip('\n'))
        print(lines[4:10])
        break

如果在代码I的第5行键入
print(第[0]行]
,它将工作,并仅打印文本的第一行,即单词“the”。但我希望它打印第5-11行,这是序言,但它总是回来说索引超出范围。。。如何修复此问题?

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

您还可以通过列表理解将其缩小,使其更清晰

with open('Constitution.txt') as fhand:
    lines = [line.rstrip("\n") for line in fhand]
print(lines[4:10])

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

您还可以通过列表理解将其缩小,使其更清晰

with open('Constitution.txt') as fhand:
    lines = [line.rstrip("\n") for line in fhand]
print(lines[4:10])

好的,您的代码的问题是,在形成列表之前,您尝试打印从5到11的
行。为了澄清,当执行
打印(第[4:10]行]
时,在您发布的代码中,您的
列表看起来像
[“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
语句将在读取第一行的末尾执行。

好的,您的代码的问题是,在形成列表之前,您试图
打印从5行到11行的
。为了澄清,当执行
打印(第[4:10]行]
时,在您发布的代码中,您的
列表看起来像
[“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
语句将在读取第一行的末尾执行。

您正在循环中执行
打印(行[4:10])
。因此,第一行被添加到
,然后打印第四行到第十行-它只包含一行

将其移到循环外部。

您正在循环内部执行
打印(第[4:10]行]
。因此,第一行被添加到
,然后打印第四行到第十行-它只包含一行

将其移出循环。

您可以使用readlines()方法从文件生成行列表。然后可以使用join()打印出要查找的特定行

with open('Constitution.txt') as fhand:
     print "".join(fhand.readlines()[4:10])
“.join()位所做的只是从新形成的列表中获取列表元素4到10,并将它们端到端地连接在一起。因为列表元素已经有了换行符,所以不需要用换行符连接它们。看看你的清单,看看我的意思

with open('Constitution.txt') as fhand:
    print fhand.readlines()[4:10]

> ['line5\n', 'line6\n', 'line7\n', 'line8\n', 'line9\n', 'line10\n']
可以使用readlines()方法从文件生成行列表。然后可以使用join()打印出要查找的特定行

with open('Constitution.txt') as fhand:
     print "".join(fhand.readlines()[4:10])
“.join()位所做的只是从新形成的列表中获取列表元素4到10,并将它们端到端地连接在一起。因为列表元素已经有了换行符,所以不需要用换行符连接它们。看看你的清单,看看我的意思

with open('Constitution.txt') as fhand:
    print fhand.readlines()[4:10]

> ['line5\n', 'line6\n', 'line7\n', 'line8\n', 'line9\n', 'line10\n']

请修正你的缩进。请提供一份。。。
打印(第[…]行)
是否在循环内?正常。所以,如果你想一想为什么要打破你的循环,这将是非常有用的。有必要吗?有什么问题吗?为什么您希望在循环的第一次迭代中有不止一行?阅读要知道Read()和readlines()之间的区别,请修复缩进。请提供一份。。。
打印(第[…]行)
是否在循环内?正常。所以,如果你想一想为什么要打破你的循环,这将是非常有用的。有必要吗?有什么问题吗?为什么您希望在循环的第一次迭代中有不止一行?阅读以了解Read()和readlines()之间的区别,您应该将其作为注释发布。请使用“您的答案”表单仅验证答案。虽然这是一个很好的建议,但不应将其作为答案发布,而应作为评论发布。@Joao抱歉,由于声誉低下,我无法发表评论。这很尴尬。这并不能回答这个问题。一旦你有足够的钱,你将能够;相反@马丁:好的,我将不再发表这样的评论作为回答。我把原来的帖子改成了一个答案,不过只要作者澄清了细节。你应该把它作为评论发布。请使用“您的答案”表单仅验证答案。虽然这是一个很好的建议,但不应将其作为答案发布,而应作为评论发布。@Joao抱歉,由于声誉低下,我无法发表评论。这很尴尬。这并不能回答这个问题。一旦你有足够的钱,你将能够;相反@马丁:好的,我将不再发表这样的评论作为回答。我把原来的帖子改成了一个答案,尽管作者澄清了细节。