LINUX.ORG.RU

>>> import json
>>> s = '{"ключ1":"значение1","ключ2":"значение2","ключ3":"значение3"}'
>>> d = json.load(s)
>>> d["ключ2"]
'значение2'
i_gnatenko_brain ★★★★
()
Ответ на: комментарий от shrub

ну это уж совсем хардкор, можено и rm -vf ~/* туда послать.

thunar ★★★★★
()
Ответ на: комментарий от Dred

лорчую за json.loads

Напрасно. Во втором комментарии более удобное решение с ast.literal_eval.

нельзя такое советовать

ТС сам выберет каким методом ему решить задачу.

shrub ★★★★★
()

Все зависит от вида кавычек

qI__Ip
()

А как разобраться с

  —
и т.д.?

cinyflo ★★★★★
() автор топика
Последнее исправление: cinyflo (всего исправлений: 1)
Ответ на: комментарий от cinyflo

Можно в двух словах почему?

exec как и eval исполняет переданную ему строку как python-код. Если ты не проверяешь передаваемые данные, то передать тебе на исполнение можно зловредный код. Об этом выше упоминалось (rm -vf ~/*).

// конкретно этот 'rm' не сработает, нужно импорт модуля ещё сделать, но суть ясна

shrub ★★★★★
()
Ответ на: комментарий от cinyflo

Есть несколько решений. Например:

>>> import HTMLParser
>>>
>>> a = HTMLParser.HTMLParser()
>>> a.unescape('  —')
u'\xa0 \x97'
>>>

Ты бы описал проблему целиком. Да в dev, а не в general.

// Эти штуки называются HTML Entities (если потом гуглить будешь).

shrub ★★★★★
()
Ответ на: комментарий от sin_a

но json.loads не подойдёт потому что разделители не двоеточие а точка с запятой

это тоже не подойдёт, по-моему :) вот если вместо " были ' (которые не парсятся json.loads), тогда бы подошло

я сам не понимаю, что это - несколько лет назад понадобилось распарсить дикт, этим самым и распарсил, в памяти отложилось, а вглубь я не вникал

buratino ★★★★★
()
Ответ на: комментарий от buratino

Отличный способ, кстати, спасибо.

Предыдущему комментатору:

import ast

s = '{"ключ1";"значение1","ключ2";"значение2","ключ3";"значение3"}'
s = s.replace(';', ':')
print(ast.literal_eval(s)['ключ2'])

anonymous
()
Ответ на: комментарий от anonymous

Понятно, спасибо, похоже это не совсем то. У меня строка имеет другой вид:

{ aaa bbb ccc 12:10:24; ddd eee 2016/09/13 12:20:24; fff ggg 00:11:22:33:44:55; hhh iii «string»; }

И двоеточия значимые есть и кавычек нет. Это база лизинга dhcp, хочу преобразовывать в конфиг (статику) а готовых инструментов не нашёл.

sin_a ★★★★★
()
Ответ на: комментарий от sin_a

тут, по-моему, простой парсер на основе split пойдёт :)

в самом крайнем случае - нарезка по регулярным (забыл, как функция называется)

buratino ★★★★★
()
Ответ на: комментарий от sin_a

Ну да, либо split(';'), либо модуль csv.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.