0

我正在做一个项目并且遇到了麻烦。请记住,我是初学者程序员。

我想要做的是在两点之间打印文本文件中的信息。

我的代码:

AccountName=input("What Is The Name Of The Account Holder?")

Accounts=open("Accounts.txt", "r")
lines = Accounts.readlines()
Accounts.close

for i, line in enumerate(lines):
    if AccountName in line:
        print(line)

文本文件:

Alex Peters Aken South Carolina Citizens Bank 865074 $25,000 09/25/2013 12401 (845)545-5555 Joe Small Albany New York Key Bank 763081 $4,800 10/15/2013 24503 (845)734-5555 假设我想从“Joe Small”打印到 (845)734-5555 我该怎么做?

(这些信息都不是真实的)

4

3 回答 3

1

如果您知道有问题的行,并且您使用过.readlines,那么您可以找到所需的子列表:

sublines = lines[lines.index('Joe Small'):lines.index('(845)734-5555')+1]

然后,您可以打印该列表中的每一行。

但是请注意,如果列表中有多个唯一行,则此方法将不起作用。

我会采取一种更像的方法:

startLine = 'Joe Small'
endLine = '(845)734-5555'

shouldPrint = False

for line in f:
    line = line.strip()
    if shouldPrint:
        print line

    if line == startLine:
        shouldPrint = True
    elif line == endLine:
        shouldPrint = False
于 2013-04-15T00:24:46.140 回答
0

您可以将 for 循环更改为(在 Python3 中)

line_index = 0
while line_index < len(lines):
    if AccountName in lines[line_index]:
        for line in lines[line_index:line_index+9]:
            print(line, end="")
        line_index += 9
    else:
        line_index += 1

在 Python 2.X 中,打印语句应该是:

print line,
于 2013-04-15T00:24:34.387 回答
0

我个人喜欢sapi的解决方案,

Accounts=open("file.txt", "r")
lines = Accounts.readlines()
lines = [line.strip() for line in lines]
Accounts.close()

accounts = zip(*[iter(lines)]*9)

for account in accounts:
    if "Joe Small" in account:
        print account
于 2013-04-15T00:27:33.833 回答