gpt4 book ai didi

python - 比较 2 个列表的元素并仅打印不同的一个

转载 作者:太空宇宙 更新时间:2023-11-03 20:41:35 25 4
gpt4 key购买 nike

我有 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,在文件2中查找。如果匹配,则继续第 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("\r\n")
result=os.popen(resultcmd).read().split("\r\n")

test=[[i,c] for i,c in zip(id,result)]
print test

如果还有其他方法请说明。谢谢

最佳答案

如果你想从 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,相同时打印Found it

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

关于python - 比较 2 个列表的元素并仅打印不同的一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56833185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com