Python 用于提取Twitter查询部分的正则表达式

Python 用于提取Twitter查询部分的正则表达式,python,regex,python-2.7,Python,Regex,Python 2.7,我想从以下字符串中提取q和geocode值 ?since_id=261042755432763393&q=salvia&geocode=39.862712%2C-75.33958%2C10mi 我尝试了以下正则表达式 expr = re.compile('\[\=\](.*?)\[\&\]') vals = expr.match(str) 但是,VAL是None。我也不知道如何在之前找到一些东西,比如说,q=与= 不需要正则表达式(使用Python 3): 显然,s

我想从以下字符串中提取
q
geocode

 ?since_id=261042755432763393&q=salvia&geocode=39.862712%2C-75.33958%2C10mi
我尝试了以下正则表达式

expr = re.compile('\[\=\](.*?)\[\&\]')
vals = expr.match(str)
但是,VAL是
None
。我也不知道如何在之前找到一些东西,比如说,
q=
=

不需要正则表达式(使用Python 3):

显然,
str
包含您的输入

由于(根据您的标记)您使用的是Python 2.7,因此我认为您需要将import语句更改为:

from urlparse import parse_qs
如果您使用的是2.6版之前的Python,那么import语句是

from cgi import parse_qs

我认为这在没有正则表达式的情况下很容易做到:

string = '?since_id=261042755432763393&q=salvia&geocode=39.862712%2C-75.33958%2C10mi'
parts = string[1:].split('&') # the [1:] is to leave out the '?'
pairs = {}
for part in parts:
    try:
        key, value = part.split('=')
        pairs[key] = value
    except:
        pass

应该包含字符串的所有键值对。

无论是正则表达式还是非正则表达式,最好使用现有的、经过测试的代码,如urllib。当然!我对它不太熟悉。
string = '?since_id=261042755432763393&q=salvia&geocode=39.862712%2C-75.33958%2C10mi'
parts = string[1:].split('&') # the [1:] is to leave out the '?'
pairs = {}
for part in parts:
    try:
        key, value = part.split('=')
        pairs[key] = value
    except:
        pass