Избегайте двойных кавычек для JSON в Python - PullRequest
35 голосов
/ 13 мая 2011

Как заменить двойные кавычки на обратную косую черту и двойные кавычки в 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'

Ответы [ 4 ]

84 голосов
/ 13 мая 2011

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

import json

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

>>> json.dumps(s)
<<< '"my string with \\"double quotes\\" blablabla"'
23 голосов
/ 09 сентября 2013

Обратите внимание, что вы можете избежать массива / словаря 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}
18 голосов
/ 13 мая 2011
>>> 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
>>> 
0 голосов
/ 13 мая 2011

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

>>> s = """my string with "some" double quotes"""
>>> print s
my string with "some" double quotes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...