web-dev-qa-db-fra.com

Escaping quotes in string

J'ai un dictionnaire python, par exemple:

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

Cette taille est 1/4 pouce, comment pourrais-je "échapper" à cette citation? Donc, il serait toujours afficher comme 1/4 ",

C'est une liste de choses, donc je ne peux pas simplement le coder manuellement comme 1/4\", J'ai essayé replace('"','\"')

EDIT: La liste originale est un champ de texte dans mes modèles 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'}]

La prochaine étape je dois préparer la liste pour jQuery, donc je remplace comme ceci pour que sa syntaxe soit correcte pour json .

Alors j'ai cette liste:

[{"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"}]

Alors maintenant, la liste est envoyée au modèle et je la parcoure avec jquery, mais la liste est cassée à cause du "dans les chaînes. 

SO ... je dois échapper à ceux-ci "pour que la liste fonctionne, sinon elle a une erreur de syntaxe évidente.

J'espère que cela a du sens maintenant.

Merci

16
Harry

Vous devez échapper votre barre oblique inversée lors du remplacement pour le faire imprimer. Essayer 

replace('"','\\"')
31
stema

Il n'y a pas besoin de le faire à la dure. Laissez Django sérialiser la requête définie pour vous.

J'ai eu le même problème, j'ai utilisé une méthode d'échappement intégrée au python ... quelque chose comme ça m'a aidé

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

Réf: -

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

1
Vaibhav Chauhan

Vous dites:

Je dois préparer la liste pour jQuery

Je suppose donc que vous essayez de générer des objets Python sous forme de chaîne dans un fichier de modèle, transformé de sorte que la chaîne de sortie constitue un code Javascript valide.

Cela revient à les sérialiser en JSON.

Ceci est un problème résolu, au lieu de remplacer les guillemets simples par des guillemets doubles, etc.

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)

Cela gérera toute l'échappement pour vous et garantira que le résultat est un objet Javascript valide.

0
Anentropic