Подтвердить что ты не робот

Escape двойные кавычки для JSON в Python

Как заменить двойные кавычки на обратную косую черту и двойные кавычки в Python?

>>> s = 'my string with "double quotes" blablabla'
>>> s.replace('"', '\\"')
'my string with \\"double quotes\\" blablabla'
>>> s.replace('"', '\\\"')
'my string with \\"double quotes\\" blablabla'

Я хотел бы получить следующее:

'my string with \"double quotes\" blablabla'
4b9b3361

Ответ 1

>>> s = 'my string with \\"double quotes\\" blablabla'
>>> s
'my string with \\"double quotes\\" blablabla'
>>> print s
my string with \"double quotes\" blablabla
>>> 

Когда вы просто запрашиваете 's', это ускользает от\для вас, когда вы печатаете его, вы видите строку более "сырой". Итак, теперь...

>>> s = """my string with "double quotes" blablabla"""
'my string with "double quotes" blablabla'
>>> print s.replace('"', '\\"')
my string with \"double quotes\" blablabla
>>> 

Ответ 2

Вы должны использовать модуль json. json.dumps(string). Он также может сериализовать другие типы данных python.

import json

>>> s = 'my string with "double quotes" blablabla'

>>> json.dumps(s)
<<< '"my string with \\"double quotes\\" blablabla"'

Ответ 3

Обратите внимание, что вы можете избежать json-массива/словаря, выполнив json.dumps дважды и json.loads дважды:

>>> a = {'x':1}
>>> b = json.dumps(json.dumps(a))
>>> b
'"{\\"x\\": 1}"'
>>> json.loads(json.loads(b))
{u'x': 1}

Ответ 4

Почему бы не подавить строку с тройными кавычками:

>>> s = """my string with "some" double quotes"""
>>> print s
my string with "some" double quotes