0

我正在尝试打开两个文件。第一个(大师)看起来像:

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。如果我在嵌套循环之前打印出产品,那是正确的,但是如果我在嵌套循环中打印它,它会打印第一个产品多次,然后每隔一个都是 ABCXXXX。

我确信我的逻辑可以简化,但这不是必需的,我真的想不出该怎么做,因为我对 python 还是很陌生。

我需要的是从“masters”列表中取出主要产品,并在“allp”列表中找到它的所有子产品。我需要使用其主产品中的信息打印每个子产品。

4

1 回答 1

1

你会想要

allp = open("allp.txt","r").readlines()

既然你这样做了

for line_2 in allp:

在一个循环中,第一次之后的所有后续迭代都将为空白。

编辑
正如 mgilson 指出的那样,allp.seek(0)在每次迭代结束时也是一种很好的方法,尤其是对于大文件。

于 2013-02-19T18:37:38.650 回答