q
と値を抽出したい次の文字列がありgeocode
ます。
?since_id=261042755432763393&q=salvia&geocode=39.862712%2C-75.33958%2C10mi
次の正規表現を試してみました。
expr = re.compile('\[\=\](.*?)\[\&\]')
vals = expr.match(str)
ただし、valsはNone
です。また、前に何かを見つける方法もわかりませq=
ん=
。
q
と値を抽出したい次の文字列がありgeocode
ます。
?since_id=261042755432763393&q=salvia&geocode=39.862712%2C-75.33958%2C10mi
次の正規表現を試してみました。
expr = re.compile('\[\=\](.*?)\[\&\]')
vals = expr.match(str)
ただし、valsはNone
です。また、前に何かを見つける方法もわかりませq=
ん=
。
正規表現は必要ありません(Python 3を使用):
>>> from urllib.parse import parse_qs
>>> query = parse_qs(str[1:])
>>> query
{'q': ['salvia'], 'geocode': ['39.862712,-75.33958,10mi'], 'since_id': ['261042755432763393']}
>>> query['q']
['salvia']
>>> query['geocode']
['39.862712,-75.33958,10mi']
明らかに、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
またpairs
、文字列のすべてのキーと値のペアが含まれている必要があります。