2013-12-18 6 views
-5
>>> import simplejson 
>>> data={'s': 1, 'd': {'kwds': {u'"ramana"': {u'"ramana"': [(0L, 7L)]}}}} 
>>> print simplejson.dumps(data, ensure_ascii=False) 

Тогда я получил вот это.как игнорировать в следующем коде?

{"s": 1, "d": {"kwds": {"\"ramana\"": {"\"ramana\"": [[0, 7]]}}}} 

Но я хочу, чтобы как:

{"s": 1, "d": {"kwds": {""ramana"": {""ramana"": [[0, 7]]}}}} 

Как сделать это?

+0

Почему вы хотите распечатать его без экранирования (синтаксические анализаторы не смогут его прочитать)? вы понимаете, что фактические строки не содержат '' \ ''? –

+2

'u '" ramana "' 'цитируется, поэтому вы получаете скрытую цитату. Если вам не нужна эвакуированная цитата, вы должны иметь, например, 'u'ramana'' – nvlass

+0

использовать' print'. 'Print'. – Marcin

ответ

2

Это всего лишь представление данных. Вы можете игнорировать это.

Почему это представлено так?

"" означает пустую строку в Python. Итак, если у вас есть предложение, как этот

Welcome to "SO" Guys 

Когда компьютер обрабатывает его, он может стать

"Welcome to "SO" Guys" 

И это будет рассматриваться как два разных струны ("Welcome to " и " Guys"). Теперь, что такое SO, здесь? Вот почему simplejson избегает символа " с \. Но данные безопасны,

Проверить этот пример

data = 'Welcome to "SO" Guys' 
import simplejson 
print simplejson.dumps(data) 
print data 

Выход

"Welcome to \"SO\" Guys" 
Welcome to "SO" Guys 

И simplejson делает это из-за JSON's specification

2,5. Строки

Представление строк аналогично соглашениям, используемым в семействе языков программирования C. Строка начинается и заканчивается
кавычки. Все символы Unicode могут быть размещены в пределах
кавычки для символов, которые должны быть экранированы, за исключением:
кавычки, реверс солидуса, и управляющие символами (U + 0000
через U + 001F).

Смежные вопросы