按编号输出特定行

时间:2017-09-02 19:25:40

标签: python range readlines

我想从文件中读取第25到55行,但是当它应该是30行时,范围似乎只输出一个数字和6行。

hamlettext = open('hamlet.txt', 'r')
for i in range (25,55):
    data = hamlettext.readlines(i)

print(i)
print(data)

输出:

54
['\n', 'Mar.\n', 'O, farewell, honest soldier;\n', "Who hath reliev'd you?\n"]

3 个答案:

答案 0 :(得分:4)

使用内置enumerate功能:

for i, line in enumerate(hamlettext):
    if i in range(25, 55):
        print(i)
        print(line)

答案 1 :(得分:2)

您可以完全读取文件然后切片以获取行列表:

with open('hamlet.txt', 'r') as f:
    data = f.readlines()[25:55]

如果文件很大,那么最好跳过25行,然后读取,然后退出循环以避免读取其他数千行:

with open('hamlet.txt', 'r') as f:
    for i, line in enumerate(hamlettext):
        if i < 25:
           continue
        elif i >= 55:
           break
        else:
           print(i,line.rstrip())

另请注意,如果您将行号与文本编辑器进行比较,则会出现1个偏移量(python从0开始,编辑器从1开始,因此您可以使用enumerate(hamlettext,1)来修复那是正确的。

答案 2 :(得分:-2)

所以上面代码中的i正在打印最后一行。要读取25到55之间的所有行,您需要在循环内打印数据。

    hamlettext = open('hamlet.txt', 'r')
    for i in range (25,55):
        data = hamlettext.readlines(i)

        print(i)
        print(data)