web-dev-qa-db-fra.com

Renvoie une variable dans une liste Python avec des guillemets doubles au lieu de simples

J'essaie de renvoyer une variable d'une liste de chaînes entre guillemets doubles plutôt que simples.

Par exemple, si ma liste est

List = ["A", "B"]

si je tape List[0] la sortie est 'A'. Je veux plutôt "A". Y-a-t-il un moyen de faire ça? J'en ai besoin à cause d'un script externe qui s'exécute dans ArcGIS, qui accepte uniquement les variables entre guillemets doubles.

17
umbe1987

Vous pouvez utiliser json.dumps ()

>>> import json
>>> List = ["A", "B"]
>>> print json.dumps(List)
["A", "B"]
40
fn.

Si vous avez besoin que la sortie soit formatée d'une manière particulière, utilisez quelque chose comme str.format() :

>>> print('"{0}"'.format(List[0]))
"A"

Les guillemets que vous avez utilisés pour définir les chaînes dans la liste sont oubliés par Python dès que la ligne est analysée. Si vous voulez émettre une chaîne avec des guillemets autour, vous devez le faire vous-même .

Ce que vous voyez est l'interpréteur Python affichant une représentation sous forme de chaîne de la valeur de l'expression. Plus précisément, si vous tapez une expression dans l'interpréteur qui n'évalue pas None, il appellera repr sur le résultat afin de générer une représentation de chaîne qu'il pourra afficher. Pour une chaîne, cela inclut des guillemets simples.

L'interpréteur interactif fait essentiellement quelque chose comme ça chaque fois que vous tapez une expression (appelée, disons, expr):

result = expr
if result is not None:
    print(repr(result))

Notez que mon exemple, print renvoie None, donc l'interpréteur lui-même n'imprime rien. Pendant ce temps, la fonction print génère la chaîne elle-même, en contournant la logique ci-dessus.

5
Will Vousden