【发布时间】:2022-01-12 00:49:58
【问题描述】:
我错过了一些东西,它让我发疯,。出于某种原因,对aliases dicts 列表的查找不起作用。
import urllib.parse
def parse_source_from_url(url):
# Clean up the url
parse_url = urllib.parse.urlparse(url.strip().replace('\n', ''))
# Parse the interesting parts
url = parse_url.netloc.split('.')
# Words to omit
keywords = ['feeds', 'com']
# Determine which url words are not keywords to omit
feed_source = [u for u in url if u not in keywords][0]
# Map out aliases as needed
aliases = [
{'feed_source': 'example', 'alias': 'good'},
{'feed_source': 'feedburner', 'alias': 'notgood'}]
# Select alias if feed_source is shown in list of dict
# This is where the problem is
feed_source = [
a['alias']
if a['feed_source'] == feed_source
else feed_source
for a in aliases]
# Return only the aliased name
return feed_source[0]
urls = ['https://feeds.example.com/', 'https://feeds.feedburner.com/']
for u in urls:
test = parse_source_from_url(u)
print(test)
结果:
- 第一个结果是正确的(“example”别名为“good”),但第二个 URL 不正确。
- “feedburner”应别名为“notgood”
good
feedburner
试过了:
- 方法here 使用
next()和get()方法。 - 同样的问题
【问题讨论】:
-
我很困惑
feed_source应该是什么。我的印象是,您至少在 2 个不同的事物上使用了相同的变量名。 -
最初,它是
.netloc.split('.')部分网址的列表(例如[feeds, feedburner, com])。然后是别名检查。如果 feed_source 应该是别名,则从具有相应 'feed_source' 的 dict 中获取 'alias',否则,保留它。
标签: python list dictionary