2014-07-01 52 views
0

我用这个命令得到查询字符串:如何操作查询字符串?

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或类似的东西。你有什么主意吗?

+1

相关信息[这里]的文档(http://stackoverflow.com/questions/24030565/is-it-possible-to-get - 值 - 从查询字符串与 - 同名) –

回答

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

尝试类似:

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=所有出现虽然。如果你想只替换第一或进一步自定义更换,请参阅我公司提供