LINUX.ORG.RU

Ответ на: комментарий от shrub

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

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

лорчую за json.loads

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

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

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

shrub ★★★★★ ()

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

  —
и т.д.?

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 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.