如何自动解析参数

2024-05-15 08:40:41 发布

您现在位置:Python中文网/ 问答频道 /正文

URL请求格式可能是

http://SERVER/search/categories=Macrohistory&name=Cotton,Gasoline

然后我想将参数存储为以下哈希结构。你知道吗

{
"categories" => ["Macrohistory"],
"name" => ["Cotton","Gasoline"]
}

这是一个类似的请求。你知道吗

http://SERVER/search/tag=Taiwan,China&name=Cotton,Gasoline

{
"tag" => ["Taiwan", "China"],
"name" => ["Cotton","Gasoline"]
}

是否有任何内置或推荐的软件包,以获得我的预期结果?你知道吗

我可以手动编写解析器

但我不想重修车轮

如果有更好的解决方案,谢谢。你知道吗

烧瓶法

@app.route("/search/<string:parameters>")
@return_json
def search():

Tags: namehttpurlsearch参数servertag格式
1条回答
网友
1楼 · 发布于 2024-05-15 08:40:41

在URL中,name=value元素通常作为查询字符串的一部分输入,该字符串添加到URL末尾的“?”后面。那会把你的网址改成

http://SERVER/search/?categories=Macrohistory&name=Cotton,Gasoline

通过此更改,以下代码几乎可以为您提供所需的输出:

>>> import urlparse
>>> s = "http://SERVER/search/?categories=Macrohistory&name=Cotton,Gasoline"
>>> urlparse.urlparse(s)
ParseResult(scheme='http', netloc='SERVER', path='/search/', params='', query='categories=Macrohistory&name=Cotton,Gasoline', fragment='')
>>> urlparse.parse_qs(urlparse.urlparse(s).query)
{'name': ['Cotton,Gasoline'], 'categories': ['Macrohistory']}

要将“Cotton”和“galvine”作为值“name”的两个单独列表元素,需要在URL中分别输入它们:

>>> s = "http://SERVER/search/?categories=Macrohistory&name=Cotton&name=Gasoline"
>>> urlparse.parse_qs(urlparse.urlparse(s).query)
{'name': ['Cotton', 'Gasoline'], 'categories': ['Macrohistory']}

相关问题 更多 >