我正在开展一个项目并遇到麻烦。 请记住,我是一名初学程序员。
我想要做的是在两点之间打印文本文件中的信息。
我的代码:
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
我该怎么做?
(这些信息都不是真实的)
答案 0 :(得分: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
答案 1 :(得分: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,
答案 2 :(得分: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