T
T
Taya2019-06-04 19:14:09
Python
Taya, 2019-06-04 19:14:09

How to get the same dictionaries with regular expressions?

when parsing, you need to get dictionaries from the marker

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'},]

I need to get dictionaries. how to get one - I got
\[\s*({.+})
the second, to get just add the first option \[\s*({.+}),\s*({.+})
, but there are many such dictionaries, if there is any way to get one dictionary and the regular expression, something like loop

Answer the question

In order to leave comments, you need to log in

2 answer(s)
D
Dmitry Shitskov, 2019-06-04
@Zarom

Umm, this is json
Deserialize and work like with a regular dict

D
dodo512, 2019-06-04
@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'])

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question