我使用此命令获取查询字符串:
query_string = self.request.query
我的查询字符串是这样的:
"channel_sort=trending&channel_time=6&keyword=&channel_prepage=16&channel_pageno=25&page_country=usa"
我想将channel_pageno值更改为1而不是25.我已经这样做了:
def query_first_page(query):
qs = query.split('&')
qs_parts = {}
for item in qs:
temp = item.split('=')
qs_parts.update({temp[0]: temp[1]})
qs_parts['channel_pageno'] = 1
list = []
for key, value in qs_parts.iteritems():
list.append(str(key) + '=' + str(value))
return '&'.join(list)
我的功能正常。但我认为必须有更好的方法来做到这一点,例如查询字符串处理lib或类似的东西。你有什么想法吗?
答案 0 :(得分:1)
import urllib
data = self.request.GET.copy() # or data = urlparse.parse_qs(self.request.query)
data['channel_pageno'] = 1
uri = urllib.urlencode(data)
您将在uri
中修改查询字符串。
答案 1 :(得分:1)
尝试类似:
import re
query_string = re.sub(r"channel_pageno=[0-9]+&", "channel_pageno=1&", query_string)
使用正则表达式, re.sub的工作方式与str.replace类似。在这里,您需要查找channel_pageno=
后跟至少1个数字和&
符号,并将其替换为正确的值
这将取代channel_pageno=
的所有出现。如果您只想更换第一个或进一步定制更换,请参阅我提供的文档