【发布时间】:2018-01-17 20:04:34
【问题描述】:
我有一个巨大的文本文件,由这样的“块”组成:
block
object pen
fruit apple
people mike
block
electronic laptop
city dallas
fruit banana
object stapler
vehicle car
block
people george
fruit orange
vehicle truck
city austin
object hammer
在每个区块中,随机一行只有一个水果。每个块有不同的行数。我想在这个文件中进行迭代,打印包括水果名称在内的所有内容,然后跳到下一个块。一旦我在一个块中找到水果,检查下一行是否是水果是浪费时间。我只想跳到下一个块,但问题是我不知道该块前面有多少行。所以输出应该是这样的:
block
object pen
the fruit is: apple
block
electronic laptop
city dallas
the fruit is: banana
block
people george
the fruit is: orange
我可以通过两种方式产生这个输出,一种是:
flag = True
with open("sample.txt", "r") as f:
for line in f.readlines():
if line.split()[0] == 'fruit':
print "the fruit is: " + line.split()[1]
flag = False
if line.split()[0] == 'block':
flag = True
if flag:
print line
还有两个:
flag = False
with open("sample.txt", "r") as f:
for line in f.readlines():
if line.split()[0] == 'fruit':
print "the fruit is: " + line.split()[1]
flag = True
if line.split()[0] == 'block':
flag = False
if flag:
continue
print line
但这不是我想要的。我的代码仍然检查每一行是否是水果。我想跳过水果之后的行直到阻塞,然后从那里继续。我怎样才能做到这一点?
【问题讨论】:
-
if flag and line.split()[0] == 'fruit':只测试标志以避免比较 -
您的第二段代码已经是您要的...?
标签: python text io text-files