【发布时间】:2019-08-09 17:00:34
【问题描述】:
python 的新手。
首先 我想使用请求从网页正文中提取 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
【问题讨论】:
-
尚不完全清楚您在寻找什么,here are the docs 在 python 3 中用于设置操作。你可以尝试
black & white(看起来你已经完成了),black - white用于差异,black ^ white用于对称差异,black < white,black>=white用于子集。您是否正在尝试查找两者中 的元素,您是否正在尝试查找两者中仅 的元素?一些示例输入和输出可能会有所帮助 -
我为造成的混乱道歉。我正在尝试查找两者中的元素(IP 地址)。
set from url 93.43.2.3 83.23.2.2 98.21.2.4 set from csv 54.54.3.2 90.90.32.3 98.21.2.4我想收到关于 98.21.2.4 地址在两个集合中的警报 -
根据您包含的内容,
url & csv和url.intersection(csv)返回{'98.21.2.4'},any(i in url for i in csv)返回True。你检查过格式差异吗?前导或尾随空格/换行符是常见的罪魁祸首。 -
而且,关于您的列表“缺少”元素这一事实,原件中是否有任何重复项?这将导致长度差异。
-
感谢 G. 安德森!
标签: python python-3.x set compare