python中的更多嵌套for循环
我正试图打开两个文件。第一个(masters)看起来像:python中的更多嵌套for循环,python,for-loop,nested,Python,For Loop,Nested,我正试图打开两个文件。第一个(masters)看起来像: ABC0001 \t rest \t of \t line ABC0002 \t rest \t of \t line ABC0003 \t rest \t of \t line ... 所有“\t”都是文件中的实际选项卡,每个项目编号后都有其他信息 下一个文件(allp)只有项目编号,但它们已展开: ABC0001 ABC0001.25 ABC0001.56 ABC0001.35 ABC0002 ABC0002.43 ABC0002.
ABC0001 \t rest \t of \t line
ABC0002 \t rest \t of \t line
ABC0003 \t rest \t of \t line
...
所有“\t”都是文件中的实际选项卡,每个项目编号后都有其他信息
下一个文件(allp)只有项目编号,但它们已展开:
ABC0001
ABC0001.25
ABC0001.56
ABC0001.35
ABC0002
ABC0002.43
ABC0002.97
...
到目前为止,我的代码是:
masters = open("masters.txt","r")
allp = open("allp.txt","r")
for line in masters:
tabloc = line.find("\t")
product = line[:tabloc]
info = line[tabloc:]
for line_2 in allp:
if product in line_2:
print 1
else:
print 0
我的输出都是0。我有点胡闹,试着将“产品”重置为ABCXXXX。如果我在嵌套循环之前打印出产品,这是正确的,但是如果我在嵌套循环中打印它,它会打印第一个产品,不管打印多少次,然后每隔一个都是abcxxx
我确信我的逻辑可以简化,但这并不是必须的,我也不知道该怎么做,因为我对python还是很陌生
我需要的是从“masters”列表中获取主要产品,并在“allp”列表中查找其所有子产品。我需要用主产品的信息打印每个子产品。您需要
allp = open("allp.txt","r").readlines()
既然你这么做了
for line_2 in allp:
在循环中,第一次迭代之后的所有后续迭代都将为空
编辑正如mgilson指出的那样,在每次迭代结束时,
allp.seek(0)
也是一种很好的方法,尤其是对于大文件。您需要什么输出?很抱歉。。。我很难准确地解析您希望从代码中看到的输出。你能不能编辑一下你的帖子,说得更具体一些?很抱歉。添加了我正在尝试做的事情。:-)这是什么意思“ABC0001\t rest\t of \t line”?主要产品是什么?没有问题。以前去过那里,非常令人沮丧:-)或者,您可以allp.seek(0)
重置文件对象,以便再次对其进行迭代。如果你的文件很大的话,这可能会更好——不过如果它们的大小合理的话,这并不重要。