比较2个列表的元素,仅打印不同的元素



我有2个格式的XML文件:

<tag1>
<tag2>
<ID>integer</ID>
<randomtags>
<RESULT>a_long_string</B>
</randomtags>
</tag2>
</tag1>
<tag1>
<tag2>
<ID>integer2</ID>
<randomtags>
<RESULT>a_long_string2</B>
</randomtags>
</tag2>
</tag1>
...
...

现在有两个具有相同格式的文件。我想显示两个文件中具有不同结果的ID。我的算法就像:

  1. 从文件1获取1个ID,在File2中搜索。如果匹配,请继续步骤2,请转到下一个ID

  2. 在两个文件中比较该ID的标签。

    (i(如果相同 - 不要打印。

    (ii(如果不同 - 打印。

我设法获得了两个包含和标签的列表,但是现在我无法以正确的方式应用我的算法。我的尝试:

import re
import sys
import os
for i in range(1,len(sys.argv)):
        #Regex to fetch IDs only
        idcmd="awk '/<ID>[[:digit:]][[:digit:]]*/ {print}' %s | sed 's/</?ID>//g'" % sys.argv[i]
        #Regex to fetch RESULT tag only
        resultcmd="awk '/<RESULT>.*/ {print}' %s" % sys.argv[i]

        id=os.popen(idcmd).read().split("rn")
        result=os.popen(resultcmd).read().split("rn")
        test=[[i,c] for i,c in zip(id,result)]
        print test

如果有其他方法,请解释。谢谢

如果要从python中获取文件的所有ID,则应该做这样的事情:

id_file1, id_file2 = [], []
filename1 = "tmp.txt"
filename2 = "tmp.txt"

打开文件1并获取所有IDS

with open(filename1, 'r') as f:
    for line in f.readlines():
        if '<ID>' in line:
            id_file1.append(line.strip()[4:-5]

打开文件2

with open(filename2, 'r') as f:
    for line in f.readlines():
        if '<ID>' in line:
            id_file2.append(line.strip()[4:-5]

比较解析的ID和打印在相同时找到的

for value in zip(id_file1, id_file2):
    if(value[0] == value[1]): print("Found it")

最新更新