在Python中组织结果

时间:2014-02-10 14:21:30

标签: python python-2.7 organization

好吧,基本上我有一个搜索关键字的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列表,但如果没有匹配,那么它就会被识别出来。

5 个答案:

答案 0 :(得分:2)

1 /。创建dict,并为每个关键字指定一个空列表。 例如  my_dict = {'forums':[],'youtube':[],'unidentified':[]}

2 /。重复你的网址。

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()

您可以根据需要轻松扩展具有更多功能的课程。