首页 > 解决方案 > 我需要比较两组并警告任何匹配的元素

问题描述

全新的蟒蛇。

首先,我想使用请求从网页正文中提取 IP 地址列表。我有那个列表并使用 -Splitlines- 来格式化我的列表并删除除 IP 地址之外的任何内容。我正在将此列表添加到集合中。

其次,我想从 CSV 文件中提取 IP 地址列表。我有列表,还使用 ​​-Splitlines- 格式化并添加到集合中。但是,如果我在片场运行 len,我会丢失大约 1,000 行(共 18,000 行)。

此外,我尝试了几种不同的方法来比较这些集合,但我没有看到任何红旗表明两个集合中都存在一个元素。这可能是由于缺少行。

4 小时的谷歌搜索 - 终于决定寻求帮助

r = requests.get(url) 

black = set() 
for line in r.text.splitlines(): 
    bip = line.split(' ')[0]  
    black.add(bip) 
# print(black) # Print for testing


file = "file_wip.csv"

white = set()
with open(file, 'r') as filehandle:
    for line in filehandle:
      wip = line.split(',')[0] 
      white.add(wip)
# print(white) # Print for testing

# black.intersection(white) <-- my attempts to compare
# set(black) == set(white)```


1. len on the sets do not provide an accurate line count
2. comparing the sets is blank

标签: pythonpython-3.xsetcompare

解决方案


你的逻辑似乎是正确的

black = set(['93.43.2.3', '83.23.2.2' ,'98.21.2.4'])
white = set(['54.54.3.2' ,'90.90.32.3' ,'98.21.2.4'])

print(black.intersection(white))

输出

{'98.21.2.4'}

您是否检查过print(black)print(white)输出是否有任何差异?

如果您的数据有重复值,它们将被删除。这可能是长度不匹配的原因


推荐阅读