我有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个ID,在文件2中搜索它。如果匹配,则继续执行步骤2,否则转到下一个ID
比较两个文件中该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("\r\n")
result=os.popen(resultcmd).read().split("\r\n")
test=[[i,c] for i,c in zip(id,result)]
print test
如果还有其他方法,请解释。谢谢
答案 0 :(得分:0)
如果要从python文件中获取所有ID,则应执行以下操作:
id_file1, id_file2 = [], []
filename1 = "tmp.txt"
filename2 = "tmp.txt"
打开File1并获取所有iD
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")