对于范围迭代

2024-05-19 22:46:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从文本文件中迭代一定数量的行。我尝试过使用i += 1for循环的不同组合,但它似乎只是打印出文本文件中的所有行。你知道吗

def showEntries(amount):
    print("---------- SUBSCRIPTIONS ----------\n")
    with open('lib/names.txt','r') as names:
        for line in names:
            for x in range(0,2):
                print(line)
    print("----------  END OF LIST  ----------")

Tags: intxtfor数量nameslibdefsubscriptions
3条回答

你可以用^{}来做这个。你知道吗

from itertools import islice

def showEntries(filename, amount):

    with open(filename,'r') as names:
        for line in islice(names, amount):
            print(line)

我想你想要的是:

for line_no, line in enumerate(names):
    if line_no >= amount:  # if we've seen enough already
        break  # stop looping
    print(line)  # otherwise show the current line

例如:

>>> names = ["John Cleese", "Graham Chapman", "Terry Gilliam", "Eric Idle", "Terry Jones", "Michael Palin"]
>>> for index, name in enumerate(names):
    if index >= 3:
        break
    print(name)


John Cleese
Graham Chapman
Terry Gilliam

有关详细信息,请参见the docs on ^{}。你知道吗

我相信这就是你想做的。。。你知道吗

a.从用户那里获取一个电子邮件地址作为输入,并将其添加到文件中。作为旁白。。。在将其写入文件之前,可能需要执行以下操作。。。 -确保电子邮件地址是有效的地址(使用regex强制执行此操作) -确保电子邮件地址不存在(您不希望文件中充满重复的地址) 等。。。你知道吗

而且, b、 打印出如何从订户列表中获得指定数量的结果。你要么

下面是一个快速的例子,说明如何从中读取x行数。我用了很多语法糖。。你可以选择不使用。。你知道吗

def printLines(numlines):
    i = 0
    with open(file) as f:
        for line in f:
            if i < numlines:
                print line
                i += 1
            else:
                break

相关问题 更多 >