2015-08-10 2 views
2

У меня есть строка:Заменить/Удалить внутреннюю котировку в питона строке

""" 
{ 
    "description":"123456 asdad asa "0-asd;'asddf1231" "12" ", 
    "sale":12 
} 
""" 

Я хочу, чтобы расшифровать это в JSON, но поле описание плохо отформатирован. Я думаю об использовании re.sub, чтобы удалить все внутренние кавычки из поля описания, но до сих пор мне не повезло. У кого-нибудь есть хороший подсказку регулярного выражения? Благодаря!

+2

Я предполагаю, что у вас есть больше данных, в противном случае вы можете сделать это вручную. Нам нужно больше данных, чтобы узнать, насколько сложным является код очистки. Для этой конкретной строки вы можете просто заменить все экземпляры цитируемых чисел только номерами, но я не знаю, будет ли это работать для всех ваших данных. – Cyphase

+0

да, данные по производству являются более простыми. – formatjam

+0

Is '" description "' всегда первый ключ? Начиная с '' desc', это соответствующий текст, который всегда начинается с '" description ":" '? Всегда ли это заканчивается на '', '? Всегда ли это на собственной линии? – Cyphase

ответ

2

Тобой можно попробовать это, но должно быть лучше.

(?:.*?(?={))|(?:(?<=}).*)|(?:(?<!:)"(?!,)) 

Regex live here.

0

Я сейчас отвечу на это сейчас, если это действительно работает для вас; если это не так, я изменю этот ответ.

>>> import json 
>>> import re 
>>> 
>>> s = """ { "description":"123456 asdad asa "0" "12" ", "sale":12 } """ 
>>> 
>>> new_s = re.sub('"(\d+)"', r'\1', s) 
>>> new_s 
' { "description":"123456 asdad asa 0 12 ", "sale":12 } ' 
>>> 
>>> d = json.loads(new_s) 
>>> d 
{u'description': u'123456 asdad asa 0 12 ', u'sale': 12} 
Смежные вопросы