-2

我想重构此代码以接收未知参数。我的意思是,现在它通过一个 URL 列表(例如:http ://www.blahblah.com/something/somethingelse?a=8&b=2&c=3 )进行查看。代码在查询(?)上拆分,然后在&符号(&)上再次拆分。拆分后,拆分的部分(即:a=b)被放入适当命名的文件(a_file.txt)中。问题是,如果我的程序遇到不在哈希列表中的未知参数怎么办?我想这些信息会丢失。所以我的问题是 Python 是否具有以下功能: A. 构建一个之前不在哈希列表中的全新文件并适当命名, B. 将信息放入文件中,例如 (char_file.txt)。因此,如果有未知字符,请为其创建一个文件并将信息附加到其中。任何帮助表示赞赏。

import urlparse
def parse_file(input_file):
    tags = {tag: tag + '_file.txt' for tag in {'blog',
        'p','attachment_id','lang',
        'portfolio','page_id','comments_popup',
        'iframe','width','height'}}
    with open(input_file) as input:
        for line in input:
            parsed_url = urlparse.parse_qsl(urlparse.urlparse(line).query)
            if parsed_url > 0:
                for key, value in parsed_url:
                    if key in tags:
                        with open(tags[key], 'a') as output_file:
                            output_file.write(value)
                    else:
                        print key + " not in tags."
             else:
                 print(line + " does not yield query.")

parse_file()
4

1 回答 1

0

为什么你有这个tags变量?只需做你目前正在做的同样的事情,但把整个tags事情都放在一边,它应该像一个魅力一样工作。"a"如果文件尚不存在,则以 -mode打开文件会创建它。

代替

for key, value in parsed_url:
    if key in tags:
        with open(tags[key], 'a') as output_file:
            output_file.write(value)
    else:
        print key + " not in tags."

for key, value in parsed_url:
    with open(key+"_file.txt", 'a') as output_file:
        output_file.write(value)

然后,你当然也可以去掉tags顶部的声明

于 2013-11-11T19:38:32.123 回答