python анализирует данные json с двойными кавычками

Как вы анализируете данные json с двойными кавычками:

json.loads(' { "time":"1410661614", "text":"This is great", "from": { "username":"mrb", "id":"5071", "full_name":"Free "Mrb"" #here is the problem }, "id":"8090107" } ') 

python возвращает:

 ValueError: Expecting ',' delimiter: line 1 column 107 (char 106) 

2 Solutions collect form web for “python анализирует данные json с двойными кавычками”

Вы можете легко исправить эту проблему, избежав двойную кавычку ( \" )

 import json json.loads(""" { "time":"1410661614", "text":"This is great", "from": { "username":"mrb", "id":"5071", "full_name":"Free \\"Mrb\\"" }, "id":"8090107" } """) 

Как сказано в комментариях, лучше исправить генератор json, чтобы правильно избежать двойной кавычки, будет сложно разобрать и исправить json-файл.

Тот, кто написал программу, которая испускает эти неэкранированные кавычки внутри строк, требует серьезного разговора с …

Как сказал Мартийн, разбор произвольных сумасшедших цитат непросто.

OTOH, если JSON в противном случае хорошо сформирован, а оскорбительные строки не пересекают границы линии, то это не так уж плохо. Например,

 #! /usr/bin/env python ''' Escape quotes in malformed JSON value strings Written by PM 2Ring 2014.09.19 ''' import re data = [ ''' "evil_name":"Free "Mrb"",''', ''' "good_name":"Alan Turing",''' ] for line in data: pre, val = line.split(':') parts = re.split('(")', val) n = parts.count('"') if n > 2: i = 1 a = [] for c in parts: if c == '"': if 1 < i < n: c = '\\"' i += 1 a.append(c) line = pre + ':' + ''.join(a) print line 

Вывод

  "evil_name":"Free \"Mrb\"", "good_name":"Alan Turing", 
Python - лучший язык программирования в мире.