@Taya93
Брест

Как регулярными выражениями доставать одинаковые словари?

при парсинге надо достать с маркера словари
var onMapMarkers=[
												{'id':'7','name':'«HookahPlace Самара». Адрес: ул. Чапаевская, 187, Самара, Самарская обл., Россия, 443010','url':'http://smr.hookahplace.ru/smr','lat':'53.198277','lng':'50.102364'},
															{'id':'8','name':'«HookahPlace Уфа». Адрес: ул. Карла Маркса, 30, Уфа, Респ. Башкортостан, Россия, 450015','url':'http://ufa.hookahplace.ru/ufa','lat':'54.730873','lng':'55.944843'},
															{'id':'9','name':'«HookahPlace Сочи». Адрес: ул. Московская, 25, Сочи, Краснодарский край, Россия, 354000','url':'http://sochi.hookahplace.ru/sochi','lat':'43.593937','lng':'39.722965'},
															{'id':'10','name':'«HookahPlace Воронеж». Адрес: Московский просп., 155г, Воронеж, Воронежская обл., Россия, 394018','url':'http://vrn.hookahplace.ru/vrn','lat':'51.74550777','lng':'39.18299336'},
															{'id':'11','name':'«Hookahplace Казань Волкова». Адрес: ул. Волкова, 70, Казань, Респ. Татарстан, Россия, 420043','url':'http://kzn.hookahplace.ru/kzn','lat':'55.78773629163424','lng':'49.14401384788516'},
															{'id':'12','name':'«HookahPlace Лубянка». Адрес: Мясницкая ул., 24/7 с1, Москва, Россия, 101000','url':'http://msk.hookahplace.ru/lubyanka','lat':'55.76260097','lng':'37.63561129'},
															{'id':'13','name':'«HookahPlace Нижний Новгород». Адрес: ул. Ильинская, 43б, Нижний Новгород, Нижегородская обл., Россия, 603000','url':'http://nn.hookahplace.ru/nn','lat':'56.323208944120736','lng':'43.990732009925864'},
															{'id':'14','name':'«HookahPlace Рязань». Адрес: ул. Горького, 92, Рязань, Рязанская обл., Россия, 390000','url':'http://rzn.hookahplace.ru/rzn','lat':'54.62638133771338','lng':'39.74223424785043'},
															{'id':'15','name':'«HookahPlace Тула». Адрес: пр. Ленина, 61, Тула, Тульская обл., Россия, 300012','url':'http://tula.hookahplace.ru/tula','lat':'54.182770','lng':'37.606640'},
															{'id':'16','name':'«HookahPlace Новороссийск». Адрес: пр. Ленина, 4, Новороссийск, Краснодарский край, Россия, 353905','url':'http://nvrsk.hookahplace.ru/nvrsk','lat':'44.704948','lng':'37.784954'},
															{'id':'17','name':'«Новосибирск». Адрес: Ядринцевская ул., 18, Новосибирск, Новосибирская обл., Россия, 630099','url':'http://nsk.hookahplace.ru/nsk','lat':'55.0331861384834','lng':'82.92470240555724'},
															{'id':'19','name':'«HookahPlace Брянск». Адрес: пр. Ленина, 39, Брянск, Брянская обл., Россия, 241044','url':'http://brsk.hookahplace.ru/brsk','lat':'53.244221','lng':'34.364140'},
															{'id':'20','name':'«HookahPlace Краснодар Бабушкина». Адрес: ул. Бабушкина, 218, Краснодар, Краснодарский край, Россия, 350049','url':'http://krsndr.hookahplace.ru/krsndr','lat':'45.047981','lng':'38.965385'},
															{'id':'21','name':'«HookahPlace Тюмень». Адрес: ул. Ленина, 2, Тюмень, Тюменская обл., Россия, 625003','url':'http://tmn.hookahplace.ru/tmn','lat':'57.163197','lng':'65.519287'},
															{'id':'22','name':'«HookahPlace Екатеринбург». Адрес: ул. Вайнера, 40, Екатеринбург, Свердловская обл., Россия, 620014','url':'http://ekb.hookahplace.ru/ekb','lat':'56.831512','lng':'60.595547'},
															{'id':'23','name':'«HookahPlace Калининград». Адрес: ул. Пролетарская, 82, Калининград, Калининградская обл., Россия, 236021','url':'http://kgd.hookahplace.ru/kgd','lat':'54.71946242855139','lng':'20.514114083328195'},
															{'id':'24','name':'«HookahPlace Красноярск». Адрес: ул. Дубровинского, 43/2, Красноярск, Красноярский край, Россия, 660017','url':'http://krsk.hookahplace.ru/krsk','lat':'56.005556','lng':'92.853003'},
															{'id':'25','name':'«HookahPlace Иркутск». Адрес: ул. Фридриха Энгельса, 8Б, Иркутск, Иркутская обл., Россия, 664007','url':'http://irk.hookahplace.ru/irk','lat':'52.284817','lng':'104.304550'},
															{'id':'26','name':'«HookahPlace Мытищи». Адрес: просп. Олимпийский, 13кБс1, Мытищи, Московская обл., Россия, 141006','url':'http://mt.hookahplace.ru/mt','lat':'55.919666','lng':'37.762985'},
															{'id':'27','name':'«HookahPlace Пермь». Адрес: Советская ул., 46, Пермь','url':'http://perm.hookahplace.ru/perm','lat':'58.015115','lng':'56.238587'},
															{'id':'29','name':'«HookahPlace Home Ростов-на-Дону». Адрес: Греческий пер., 11, Ростов-на-Дону, Ростовская обл., Россия, 344022','url':'http://rnd.hookahplace.ru/rnd','lat':'47.22663238552845','lng':'39.72924827249142'},]


надо достать словари. как достать один - у меня получилось
\[\s*({.+})
второй, чтобы достать просто дописать первый вариант \[\s*({.+}),\s*({.+})

но словарей таких много, если какой способ, чтобы достать один словарь и регулярное выражение что-то вроде зациклить
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 3
Zarom
@Zarom
Мастер на все руки из жопы
Эмм, это же json
Десериализовать и работать как с обычным dict
Ответ написан
@dodo512
spoiler
import ast
import re

text = r'''
var onMapMarkers=[
                        {'id':'7','name':'«HookahPlace Самара». Адрес: ул. Чапаевская, 187, Самара, Самарская обл., Россия, 443010','url':'http://smr.hookahplace.ru/smr','lat':'53.198277','lng':'50.102364'},
                              {'id':'8','name':'«HookahPlace Уфа». Адрес: ул. Карла Маркса, 30, Уфа, Респ. Башкортостан, Россия, 450015','url':'http://ufa.hookahplace.ru/ufa','lat':'54.730873','lng':'55.944843'},
                              {'id':'9','name':'«HookahPlace Сочи». Адрес: ул. Московская, 25, Сочи, Краснодарский край, Россия, 354000','url':'http://sochi.hookahplace.ru/sochi','lat':'43.593937','lng':'39.722965'},
                              {'id':'10','name':'«HookahPlace Воронеж». Адрес: Московский просп., 155г, Воронеж, Воронежская обл., Россия, 394018','url':'http://vrn.hookahplace.ru/vrn','lat':'51.74550777','lng':'39.18299336'},
                              {'id':'11','name':'«Hookahplace Казань Волкова». Адрес: ул. Волкова, 70, Казань, Респ. Татарстан, Россия, 420043','url':'http://kzn.hookahplace.ru/kzn','lat':'55.78773629163424','lng':'49.14401384788516'},
                              {'id':'12','name':'«HookahPlace Лубянка». Адрес: Мясницкая ул., 24/7 с1, Москва, Россия, 101000','url':'http://msk.hookahplace.ru/lubyanka','lat':'55.76260097','lng':'37.63561129'},
                              {'id':'13','name':'«HookahPlace Нижний Новгород». Адрес: ул. Ильинская, 43б, Нижний Новгород, Нижегородская обл., Россия, 603000','url':'http://nn.hookahplace.ru/nn','lat':'56.323208944120736','lng':'43.990732009925864'},
                              {'id':'14','name':'«HookahPlace Рязань». Адрес: ул. Горького, 92, Рязань, Рязанская обл., Россия, 390000','url':'http://rzn.hookahplace.ru/rzn','lat':'54.62638133771338','lng':'39.74223424785043'},
                              {'id':'15','name':'«HookahPlace Тула». Адрес: пр. Ленина, 61, Тула, Тульская обл., Россия, 300012','url':'http://tula.hookahplace.ru/tula','lat':'54.182770','lng':'37.606640'},
                              {'id':'16','name':'«HookahPlace Новороссийск». Адрес: пр. Ленина, 4, Новороссийск, Краснодарский край, Россия, 353905','url':'http://nvrsk.hookahplace.ru/nvrsk','lat':'44.704948','lng':'37.784954'},
                              {'id':'17','name':'«Новосибирск». Адрес: Ядринцевская ул., 18, Новосибирск, Новосибирская обл., Россия, 630099','url':'http://nsk.hookahplace.ru/nsk','lat':'55.0331861384834','lng':'82.92470240555724'},
                              {'id':'19','name':'«HookahPlace Брянск». Адрес: пр. Ленина, 39, Брянск, Брянская обл., Россия, 241044','url':'http://brsk.hookahplace.ru/brsk','lat':'53.244221','lng':'34.364140'},
                              {'id':'20','name':'«HookahPlace Краснодар Бабушкина». Адрес: ул. Бабушкина, 218, Краснодар, Краснодарский край, Россия, 350049','url':'http://krsndr.hookahplace.ru/krsndr','lat':'45.047981','lng':'38.965385'},
                              {'id':'21','name':'«HookahPlace Тюмень». Адрес: ул. Ленина, 2, Тюмень, Тюменская обл., Россия, 625003','url':'http://tmn.hookahplace.ru/tmn','lat':'57.163197','lng':'65.519287'},
                              {'id':'22','name':'«HookahPlace Екатеринбург». Адрес: ул. Вайнера, 40, Екатеринбург, Свердловская обл., Россия, 620014','url':'http://ekb.hookahplace.ru/ekb','lat':'56.831512','lng':'60.595547'},
                              {'id':'23','name':'«HookahPlace Калининград». Адрес: ул. Пролетарская, 82, Калининград, Калининградская обл., Россия, 236021','url':'http://kgd.hookahplace.ru/kgd','lat':'54.71946242855139','lng':'20.514114083328195'},
                              {'id':'24','name':'«HookahPlace Красноярск». Адрес: ул. Дубровинского, 43/2, Красноярск, Красноярский край, Россия, 660017','url':'http://krsk.hookahplace.ru/krsk','lat':'56.005556','lng':'92.853003'},
                              {'id':'25','name':'«HookahPlace Иркутск». Адрес: ул. Фридриха Энгельса, 8Б, Иркутск, Иркутская обл., Россия, 664007','url':'http://irk.hookahplace.ru/irk','lat':'52.284817','lng':'104.304550'},
                              {'id':'26','name':'«HookahPlace Мытищи». Адрес: просп. Олимпийский, 13кБс1, Мытищи, Московская обл., Россия, 141006','url':'http://mt.hookahplace.ru/mt','lat':'55.919666','lng':'37.762985'},
                              {'id':'27','name':'«HookahPlace Пермь». Адрес: Советская ул., 46, Пермь','url':'http://perm.hookahplace.ru/perm','lat':'58.015115','lng':'56.238587'},
                              {'id':'29','name':'«HookahPlace Home Ростов-на-Дону». Адрес: Греческий пер., 11, Ростов-на-Дону, Ростовская обл., Россия, 344022','url':'http://rnd.hookahplace.ru/rnd','lat':'47.22663238552845','lng':'39.72924827249142'},]
'''

a = ast.literal_eval(re.search('(?s)var onMapMarkers=(\[.*?\])', text).group(1))

for shop in a:
    print(shop['name'])
Ответ написан
VicTHOR
@VicTHOR
(╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻
Надо достать все, что внутри квадратных скобок?
(?<=var onMapMarkers=\[)[^]]*
Или просто строки от фигурной до фигурной? Тут смешно)
{.*}
только глобальный поиск, g идентификатор /{.*}/g
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы