Найти - Пользователи
Полная версия: Парсинг строки без re
Начало » Python для новичков » Парсинг строки без re
1
barabansheg
Возможно ли распарсить строку вида param=value&param=value&param=value, где param всегда одно и то же, получить надо id и value. Количество пар param=value неизвестно. Можно ли это сделать не используя re? Просто взялся бы за re, да читал, что зачастую можно и без него обойтись, но тут не знаю как.
fata1ex
Если что, парсить урлы можно встроеными тулзами. Например requests, мб есть функция в urlparse.

>>> s = 'param=value&param=value&param=value'
>>> map(lambda x: x.split('='), s.split('&'))
[['param', 'value'], ['param', 'value'], ['param', 'value']]
barabansheg
А вытащить id у param? в запросе param=value. Тоже тут копаться?
При помощь re вышло так:
arr = re.findall('\[(\d+)\]=(\w+)', string)
fata1ex
barabansheg
Возможно ли распарсить строку вида param=value&param=value&param=value, где param всегда одно и то же, получить надо id и value.

Я не знаю, как отсюда можно понять, что такое id.
barabansheg
Ой, вначале не так прописал)
param[id]=value&param[id]=value
вот примерно такая строка. Нужно получить id и value
fata1ex
Ну если есть желание поизвращаться, то можно, конечно, написать что-нибудь такое?
>>> s = 'param[id]=value&param[id]=value'
>>> map(lambda x: (x[0], x[1][1:]), (map(lambda x: x[1].split(']'), map(lambda x: x.split('['), s.split('&')))))
[('id', 'value'), ('id', 'value')]

Но вообще для этого есть re и urlparse (если это урл).
barabansheg
Это не урл. Serialized массив из js ) Просто возможности передать в json нет
py.user.next
>>> import re
>>> 
>>> s = 'param[id1]=value1&param[id2]=value2'
>>> pattern = """
...     param\[
...     ([^]]+) # any chars except bracket
...     \]=
...     ([^&]+) # any chars except ampersand
... """
>>> lst = re.findall(pattern, s, re.X)
>>> print(lst)
[('id1', 'value1'), ('id2', 'value2')]
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB