Кавычки в строке - PullRequest
       4

Кавычки в строке

18 голосов
/ 08 июня 2011

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

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

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

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

РЕДАКТИРОВАТЬ:оригинальный список - это текстовое поле в моих моделях 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 = made_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, носписок поврежден из-за «в строках».

ТАК ... мне нужно экранировать «для работы списка, в противном случае он имеет явную синтаксическую ошибку.

Надеюсь, что это делаетсмысл сейчас.

спасибо

Ответы [ 5 ]

33 голосов
/ 08 июня 2011

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

replace('"','\\"')
5 голосов
/ 08 июня 2011

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

1 голос
/ 29 июня 2018

Использование

shlex.quote("string")

или

pipes.quote("string")

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

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

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

1 голос
/ 20 сентября 2013

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

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

Ref: -

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

0 голосов
/ 31 мая 2018

Вы говорите:

Я должен подготовить список для 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...