好吧,基本上我有一个搜索关键字的Google脚本。结果如下:
http://www.example.com/user/1234
http://www.youtube.com/user/125
http://www.forum.com/user/12
如何组织这些结果?:
Forums:
http://www.forum.com/user/12
YouTubes:
http://www.youtube.com/user/125
Unidentified:
http://www.example.com/user/1234
顺便说一句,我正在用关键字组织它们。如果网址中有“论坛”,那么它会转到论坛列表,如果它有YouTube,则会转到YouTube列表,但如果没有匹配,那么它就会被识别出来。
答案 0 :(得分:2)
1 /。创建dict
,并为每个关键字指定一个空列表。
例如
my_dict = {'forums':[],'youtube':[],'unidentified':[]}
3 /。在您的情况下为您的网址,域名生成密钥,您可以使用re
正则表达式模块提取密钥。
4 /检查该键的字典(步骤#1),如果它不存在,则将其分配给'未识别的密钥,如果存在,则将该URL附加到具有该密钥的字典中的列表。
答案 1 :(得分:1)
这样的东西?我想你可以根据自己的需要调整这个例子
import pprint
import re
urls = ['http://www.example.com/user/1234',
'http://www.youtube.com/user/126',
'http://www.youtube.com/user/125',
'http://www.forum.com/useryoutube/12']
pattern = re.compile('//www\.(\w+)\.')
keys = ['forum', 'youtube']
results = dict()
for u in urls:
ms = pattern.search(u)
key = ms.group(1)
if key in keys:
results.setdefault(key, []).append(u)
pprint.pprint(results)
答案 2 :(得分:1)
import urlparse
urls = """
http://www.example.com/user/1234
http://www.youtube.com/user/125
http://www.forum.com/user/12
""".split()
categories = {
"youtube.com": [],
"forum.com": [],
"unknown": [],
}
for url in urls:
netloc = urlparse.urlparse(url).netloc
if netloc.count(".") == 2:
# chop sub-domain
netloc = netloc.split(".", 1)[1]
if netloc in categories:
categories[netloc].append(url)
else:
categories["unknown"].append(url)
print categories
解析网址。找到类别。附加完整网址
答案 3 :(得分:1)
您应该将排序后的结果保存在字典中,将未排序的结果保存在列表中。然后你可以这样排序:
categorized_results = {"forum": [], "youtube": []}
uncategorized_results = []
for i in results:
i = i.split(".")
for k in categorized_results:
j = True
if k in i:
categorized_results[k].append(i)
j = False
if j:
uncategorized_results.append(i)
如果你想整齐地输出它:
category_aliases: {"forum": "Forums:", "youtube": "Youtubes:"}
for i in categorized_results:
print(category_aliases[i])
for j in categorized_results[i]:
print(j)
print("\n")
print("Unidentified:")
print("\n".join(uncategorized_results)) # Let's not put in another for loop.
答案 4 :(得分:0)
这个怎么样:
from urlparse import urlparse
class Organizing_Results(object):
CATEGORY = {'example': [], 'youtube': [], 'forum': []}
def __init__(self):
self.url_list = []
def add_single_url(self, url):
self.url_list.append(urlparse(url))
def _reduce_result_list(self, acc, element):
for c in self.CATEGORY:
if c in element[1]:
return self.CATEGORY[c].append(element)
return self.CATEGORY['example'].append(element)
def get_result(self):
reduce(lambda x, y: c._reduce_result_list(x, y), c.url_list, [])
return self.CATEGORY
c = Organizing_Results()
c.add_single_url('http://www.example.com/user/1234')
c.add_single_url('http://www.youtube.com/user/1234')
c.add_single_url('http://www.unidentified.com/user/1234')
c.get_result()
您可以根据需要轻松扩展具有更多功能的课程。