Исключение кавычек в строке

У меня есть словарь python, например:

[{"pk":"1","name":"John","size":"1/4" "},{},{},etc]

Этот размер составляет 1/4 дюйма, как бы я «убежал» от этой цитаты? Таким образом, он все равно будет отображать его как 1/4 ",

Его список вещей, поэтому я не могу просто его закодировать вручную 1/4", я попробовалreplace('"','"')

EDIT: оригинальный список - текстовое поле в моих моделях Django:

[{'pk': '91', 'size': '', 'name': 'Thread Flat For BF', 'quantity': '2'}, {'pk': '90', 'size': '', 'name': 'Blade Holders Straight ', 'quantity': '26'},{'size':'3"','name':'2m 1/4" Round bar', 'quantity':'43'},{'size':'5','name':'2m 1/8" Round bar', 'quantity':'4'}]

Следующим шагом я должен подготовить список для jQuery, поэтому я заменяю его так, чтобы он был в правильном синтаксисе для json. mat_list = industrial_part.material_list.replace ("'",' '')

Тогда у меня есть этот список:

[{"pk": "91", "size": "", "name": "Thread Flat For BF", "quantity": "2"}, {"pk": "90", "size": "", "name": "Blade Holders Straight ", "quantity": "26"},{"size':"3"","name':"2m 1/4" Round bar", "quantity":"43"},{"size":"5","name":"2m 1/8" Round bar", "quantity":"4"}]

Итак, теперь список отправляется в шаблон, и я прокручиваю его с помощью jquery, но список сломан из-за «в строках».

SO ... Мне нужно избегать этих «для того, чтобы список работал, иначе он имеет очевидную синтаксическую ошибку.

Надеюсь, теперь это имеет смысл.

благодаря

python,regex,escaping,

13

Ответов: 5


26 принят

Вам нужно избегать обратной косой черты в замене, чтобы напечатать ее. Пытаться

replace('"','\"')

Нет необходимости делать это с трудом. Пусть Django сериализует набор запросов для вас.


0

У меня была такая же проблема, я использовал встроенный метод экранирования python. что-то вроде этого помогло мне

[{"pk":"1","name":"John","size":"1/4" "},{},{},etc]

Ref: -

http://docs.python.org/2/reference/lexical_analysis.html#string-literals


0

Ты говоришь:

Мне нужно подготовить список для jQuery

Поэтому я предполагаю, что вы пытаетесь вывести объекты Python в строковой форме в файл шаблона, преобразованный так, чтобы выходная строка была действительной Javascript-кодом.

Это эквивалентно их сериализации как JSON.

Это решенная проблема, вместо того, чтобы заменять одинарные кавычки двойными кавычками и т. Д., Просто выполните это:

import json

my_python_data = [{'pk': '91', 'size': '', 'name': 'Thread Flat For BF', 'quantity': '2'}, {'pk': '90', 'size': '', 'name': 'Blade Holders Straight ', 'quantity': '26'},{'size':'3"','name':'2m 1/4" Round bar', 'quantity':'43'},{'size':'5','name':'2m 1/8" Round bar', 'quantity':'4'}]

str_to_output_in_js_template = json.dumps(my_python_data)

Это обработает все экранирование для вас и гарантирует, что результат будет действительным объектом Javascript.


0

С помощью

shlex.quote("string")

или

pipes.quote("string")

В зависимости от версии python работала для меня.

Вы можете проверить здесь более подробную информацию

https://github.com/python/cpython/blob/master/Lib/shlex.py#L281

Python, регулярное выражение, побег,
Похожие вопросы