Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Как в json.dumps включить/отключить экранирование “/”?

#python_3x #json #экранирование


Не могу слеш отэкранировать при преобразовании в JSON. (Python 3.7, Linux)

Сейчас '/' нужно '\/'

Преобразую словарь в JSON

d = json.dumps(dic) - слеши в путях к файлам "/" не экранируются


пробую предварительно path = path_raw.replace('/', '\\/')

на выхлопе экран из 4(!) обратных слешей \\\\/.

Нашел интересный пакет ujson, у него есть опция отключения экранирования слеша, но
и она не работает, 
перепробовал кучу комбинаций с разными кавычками и \r'\/' и '\\/' и '\\r\/'.
    


Ответы

Ответ 1



Попробуй вот так хаком json.dumps(your_dict).replace('/', r'\/') >>> escaped = json.dumps({"path": "/home/com/part/"}).replace('/', r'\/') >>> escaped '{"path": "\\/home\\/com\\/part\\/"}' >>> first_dict = json.loads(escaped) >>> first_dict {'path': '/home/com/part/'} Вот здесь описывается подобный случай.

Ответ 2



Пришел вот к такому решению: dic = {'path': /path} listofdic.append(dic) dump_list = json.dumps(listofdic).replace('/', r'\/') str_to_write = str(dump_list) write_file(json_file, str_to_write) в файле после записи (показываю только проблемный кусок): "path": "\/complete\/search"

Комментариев нет:

Отправить комментарий