72 votes

Échapper aux guillemets doubles pour JSON en Python

Comment remplacer les guillemets doubles par une barre oblique inverse et des guillemets doubles en Python ?

>>> s = 'my string with "double quotes" blablabla'
>>> s.replace('"', '\\"')
'my string with \\"double quotes\\" blablabla'
>>> s.replace('"', '\\\"')
'my string with \\"double quotes\\" blablabla'

Je voudrais obtenir les éléments suivants :

'my string with \"double quotes\" blablabla'

141voto

zeekay Points 22640

Vous devriez utiliser le json module. json.dumps(string) . Il peut également sérialiser d'autres types de données python.

import json

>>> s = 'my string with "double quotes" blablabla'

>>> json.dumps(s)
<<< '"my string with \\"double quotes\\" blablabla"'

64voto

Medhat Gayed Points 806

Notez que vous pouvez échapper à un tableau / dictionnaire json en faisant deux fois json.dumps et deux fois json.loads :

>>> a = {'x':1}
>>> b = json.dumps(json.dumps(a))
>>> b
'"{\\"x\\": 1}"'
>>> json.loads(json.loads(b))
{u'x': 1}

23voto

Andrew Points 1629
>>> s = 'my string with \\"double quotes\\" blablabla'
>>> s
'my string with \\"double quotes\\" blablabla'
>>> print s
my string with \"double quotes\" blablabla
>>> 

Lorsque vous demandez simplement 's', il échappe le \ pour vous, lorsque vous l'imprimez, vous voyez la chaîne dans un état plus 'brut'. Donc, maintenant...

>>> s = """my string with "double quotes" blablabla"""
'my string with "double quotes" blablabla'
>>> print s.replace('"', '\\"')
my string with \"double quotes\" blablabla
>>>

1voto

Tam Nguyen Points 38

Je sais que cette question est ancienne, mais j'espère qu'elle pourra aider quelqu'un. J'ai trouvé un excellent plugin pour ceux qui utilisent l'IDE PyCharm : Manipulation de chaînes de caractères qui peut facilement échapper aux guillemets doubles (et bien d'autres encore...), ce plugin est idéal pour les cas où vous savez ce que sera la chaîne de caractères. Pour les autres cas, l'utilisation de json.dumps(string) sera la solution recommandée

str_to_escape = 'my string with "double quotes" blablabla'

after_escape = 'my string with \"double quotes\" blablabla'

-6voto

inspectorG4dget Points 25092

Pourquoi ne pas supprimer les chaînes de caractères avec des guillemets triples ?

>>> s = """my string with "some" double quotes"""
>>> print s
my string with "some" double quotes

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X