gpt4 book ai didi

python - Python 中的模糊 URL 匹配

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:04:33 25 4
gpt4 key购买 nike

我想找到一种工具,它可以很好地模糊匹配具有相同期望额外参数的 URL。例如,对于我的用例,这两个 URL 是相同的:

atest = (http://www.npr.org/templates/story/story.php?storyId=4231170', 'http://www.npr.org/templates/story/story.php ?storyId=4231170&sc=fb&cc=fp)

乍一看,fuzz.partial_ratiofuzz.token_set_ratio fuzzywuzzy以 100 分的阈值完成工作:

ratio = fuzz.ratio(atest[0], atest[1])
partialratio = fuzz.partial_ratio(atest[0], atest[1])
sortratio = fuzz.token_sort_ratio(atest[0], atest[1])
setratio = fuzz.token_set_ratio(atest[0], atest[1])
print('ratio: %s' % (ratio))
print('partialratio: %s' % (partialratio))
print('sortratio: %s' % (sortratio))
print('setratio: %s' % (setratio))
>>>ratio: 83
>>>partialratio: 100
>>>sortratio: 83
>>>setratio: 100

但在其他情况下这种方法会失败并返回 100,例如:

atest('yahoo.com','http://finance.yahoo.com/news/earnings-preview-monsanto-report-2q-174000816.html')

我的数据中的 URL 和添加的参数变化很大。我想知道是否有人有使用 url 解析或类似方法的更好方法?

最佳答案

如果您只想检查第一个 URL 中的所有查询参数是否出现在第二个 URL 中,您可以通过设置差异以更简单的方式完成:

import urllib.parse as urlparse

base_url = 'http://www.npr.org/templates/story/story.php?storyId=4231170'
check_url = 'http://www.npr.org/templates/story/story.php?storyId=4231170&sc=fb&cc=fp'

base_url_parameters = set(urlparse.parse_qs(urlparse.urlparse(base_url).query).keys())
check_url_parameters = set(urlparse.parse_qs(urlparse.urlparse(check_url).query).keys())

print(base_url_parameters - check_url_parameters)

这将返回一个空集,但是如果您将基本 url 更改为类似

base_url = 'http://www.npr.org/templates/story/story.php?storyId=4231170&test=1'

它将返回 {'test'},这意味着第二个 URL 中缺少基本 URL 中的额外参数。

关于python - Python 中的模糊 URL 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50091594/

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