Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6

Регулярка, JSON Lite

07.07.2021, 22:05. Показов 1583. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем трям!

Народ, помогите плз создать регулярку для выражения наподобие json, но без кавычек. Типа такого:
JavaScript
1
{key1:value1, key2:value2, ..., keyN: valueN}
Вложенности не ожидается, values могут быть из букв и цифр и некоторых знаков. Сейчас пока только знак процента, типа такого:
JavaScript
1
{limit:100%}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.07.2021, 22:05
Ответы с готовыми решениями:

Регулярка для получения текста из JSON
как составить регулярное выражения чтобы получить asdfghj_25166456 где asdfghj_ постоянно а 25166456 при каждом запросе меняется ...

Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object
Всем привет! Помогите, плиз, разобраться с ошибкой: An unhandled exception of type 'Newtonsoft.Json.JsonSerializationException'...

Java, JSON и JSON Simple. Непонятка с созданием объекта JSON на сервере для отправки на фронт
Здравствуйте. Разрабатываю интернет-магазин на Java. Мне нужно на фронте получить список товаров из базы данных для отображения на...

8
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
07.07.2021, 23:46
dondublon, какую регулярку? Проверить строку на валидность такому формату? Или вытащить значения?
1
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
08.07.2021, 08:46  [ТС]
iSmokeJC, да, вытащить.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.07.2021, 08:59
dondublon, вытащить в список значения, или замутить словарь ключ-значение?

Добавлено через 2 минуты
И еще - наличие/отсутствие пробелов перед/после запятых/двоеточий строго определено? Или могут быть, а могут и не быть?
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
08.07.2021, 09:09  [ТС]
iSmokeJC, замутить словарь.
Пробелы могут быть (к сожалению).
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.07.2021, 09:35
Python
1
2
3
4
5
6
7
8
9
import re
 
s = '{key1:value1, key2 :value2,keyN : valueN}'
 
keys = re.findall(r'\w+(?= *:)', s)
values = re.findall(r'[\w%]+(?= *[},])', s)
dic = {k: v for k, v in zip(keys, values)}
 
print(dic)
Bash
1
{'key1': 'value1', 'key2': 'value2', 'keyN': 'valueN'}
В ключах разрешены только буквы, цифры, подчеркивание.
В значениях разрешены только буквы, цифры, подчеркивание и процент. Но если что - добавить несложно )
Для эксперимента напихал пробелов куда ни попадя ))

Добавлено через 9 минут
ну можно и поизвращаться )))

Python
1
2
3
4
5
6
import re
 
s = '{key1:value1, key2 :value2,keyN : valueN}'.replace('{', "{'").replace('}', "'}")
result = eval(re.sub(r'( *[,:] *)', lambda x: f"'{x.group()}'", s))
print(type(result))
print(result)
1
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
08.07.2021, 10:09  [ТС]
У меня пока получилось так (это без пробелов)
Python
1
re.findall('{(\w+:[\w%]+,)*(\w+:[\w%]+)?}','{lmit:ooo%,sds:100%}')
Спасибо, попробую ваш вариант.
Ненене, извращаться не надо !

Добавлено через 14 минут
А можно как-то избавиться от повторяющегося фрагмента (\w+:[\w%]+) ?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
08.07.2021, 10:22
знаю, что нужно регуляркой, не смог удержаться
Python
1
2
3
4
5
6
7
8
9
>>> a_dict={}
>>> text = '{key1:value1, key2 :value2,keyN : valueN}'
>>> text = text.replace('{','').replace('}','')
>>> for pair in text.split(','):
...     key,value = pair.split(':')
...     a_dict[key.strip()] = value.strip()
... 
>>> a_dict
{'key1': 'value1', 'key2': 'value2', 'keyN': 'valueN'}
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
08.07.2021, 10:30
dondublon, если не надо определять валидность файла (всю мешуру), то ключ - значение и так можно выдернуть:

Python
1
re.findall(r"(\w+)\s*:\s*([\w%]+)", string)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.07.2021, 10:30
Помогаю со студенческими работами здесь

Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object
Дополнительные сведения: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1'...

Не работает модуль json (функции json.dump(), json.load()
При запуске кода по сохранению и прочтению данных, сгенерированных пользователем: import json def get_stored_username(): ...

Mikrotik hAP lite + Mikrotik hAP lite раздача интернета по сети
Добрый день, приобрели два роутера Mikrotik hAP lite, к первому подходит интернет от провайдера (всё работает с стандартными настройками),...

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data
Всем привет, пытаюсь произвести запрос к обработчику c помощью AJAX, выдает ошибку при парсинге JSON че за фигня? гляньте плииз ребята ...

Json: возможно ли используя название поля класса взять из Json информацию
Есть такая строка: string a = json.Value<string>(); Также у меня есть класс Student, где есть, допустим поле public string Name; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru