Y a-t-il une différence entre "string" et "string" en Python? [dupliquer]

cette question a déjà une réponse ici:

En PHP, une chaîne entre "guillemets" sera analysé pour les variables à remplacer alors qu'une chaîne de caractères entourée de 'apostrophes' ne sera pas. En Python, does cette applique également?

53
demandé sur SilentGhost 2008-09-27 18:39:01

9 réponses

Non :

2.4.1. Chaîne et d'Octets littéraux

...En clair: les Deux types de littéraux peut être enfermé dans la correspondance de guillemets simples ( ' ) ou des guillemets ( " ). Ils peuvent également être inclus dans des groupes de correspondance de trois guillemets simples ou doubles (ceux-ci sont généralement appelés cordes Triple-citées). Le caractère backslash ( \ ) est utilisé pour échapper aux caractères qui autrement ont une signification particulière, comme newline, backslash lui-même, ou le caractère de citation...

108
répondu Milen A. Radev 2016-10-01 20:34:38

Python est l'un des rares (? langues où " et " avoir les mêmes fonctionnalités. Le choix pour moi dépend généralement de ce qui est à l'intérieur. Si je dois citer une chaîne qui contient des guillemets simples, j'utiliserai des guillemets doubles et vice versa, pour éviter d'avoir à échapper aux caractères de la chaîne.

exemples:

"this doesn't require escaping the single quote"
'she said "quoting is easy in python"'

ceci est documenté sur la page "String Literals" de la documentation python:

32
répondu Bryan Oakley 2014-01-20 22:20:54

dans certaines autres langues, les caractères meta ne sont pas interprétés si vous utilisez des guillemets simples. Prenez cet exemple dans Ruby:

irb(main):001:0> puts "string1\nstring2"
string1
string2
=> nil
irb(main):002:0> puts 'string1\nstring2'
string1\nstring2
=> nil

en Python, Si vous voulez que la chaîne soit prise littéralement, vous pouvez utiliser des chaînes brutes (une chaîne précédée du caractère' r'):

>>> print 'string1\nstring2'
string1
string2
>>> print r'string1\nstring2'
string1\nstring2
8
répondu Bruno Gomes 2010-08-06 22:29:17

les cordes simples et doubles citées en Python sont identiques. La seule différence est que les chaînes de caractères à guillemets simples peuvent contenir des caractères à guillemets doubles, et vice versa. Par exemple:

'a "quoted" word'
"another 'quoted' word"

encore une fois, il y a des cordes à triple citation, qui permettent à la fois les guillemets et les nouvelles lignes d'être sans escapade.

vous pouvez substituer des variables dans une chaîne en utilisant les spécificateurs nommés et les locaux() builtin:

name = 'John'
lastname = 'Smith'
print 'My name is %(name)s %(lastname)s' % locals()  # prints 'My name is John Smith'
3
répondu efotinis 2008-09-27 14:55:07

la différence entre " et " citation de chaîne de caractères est juste dans le style - sauf que l'un supprime la nécessité d'échapper à l'autre à l'intérieur du contenu de chaîne de caractères.

Style

PEP8 recommande une règle uniforme, PEP257 suggère que docstrings utilisent des guillemets doubles.

en Python, les de même. Ce PEP ne pas faire une recommandation pour ce. Choisissez une règle et de s'y tenir. Quand une chaîne contient une citation simple ou double les caractères, cependant, utilisent l'autre pour éviter les antislashs dans le chaîne. Il améliore la lisibilité.

pour les chaînes à triple citation, utilisez toujours les caractères à double citation pour être conforme à la convention docstring dans PEP 257 .

Largement utilisé, cependant, est la pratique de préférer les guillemets naturel chaînes de langage (y compris l'interpolation) - donc tout ce qui est potentiellement candidat pour I18N. Et les guillemets simples pour les chaînes techniques: symboles, caractères, chemins, options de ligne de commande, REGEXes techniques,...

(par exemple, lors de la préparation du code pour I18N, j'exécute un REGEX semi-automatique en convertissant des cordes double citées rapidement pour utiliser par exemple gettext )

3
répondu kxr 2016-03-15 09:46:16

l'interpréteur Python interactif préfère les guillemets simples:

>>> "text"
'text'

>>> 'text'
'text'

cela pourrait être déroutant pour les débutants, donc je m'en tiendrais à des citations simples (sauf si vous avez des normes de codage différentes).

2
répondu user245396 2016-01-03 11:25:18

il y a 3 façons de faire des cordes qoute en python: "chaîne" "string" """ chaîne chaîne """ ils produisent tous le même résultat.

0
répondu Vasil 2008-09-27 14:43:38

il n'y a pas de différence en Python, et vous pouvez vraiment l'utiliser à votre avantage lors de la génération de XML. La bonne syntaxe XML nécessite des doubles guillemets autour des valeurs d'attribut, et dans de nombreux langages, comme Java, cela vous force à les échapper lors de la création d'une chaîne de caractères comme celle-ci:

String HtmlInJava = "<body bgcolor=\"Pink\">"

mais en Python, vous utilisez simplement l'autre citation et assurez-vous d'utiliser la citation de fin correspondante comme ceci:

html_in_python = '<body bgcolor="Pink">'

pas mal, hein? Vous pouvez également utilisez trois guillemets doubles pour démarrer et terminer les chaînes multilignes, avec les fin de ligne inclus comme ceci:

multiline_python_string = """
This is a multi-line Python string which contains line breaks in the 
resulting string variable, so this string has a '\n' after the word
'resulting' and the first word 'word'."""
0
répondu Steve Moyer 2008-09-27 14:52:47

Oui. Ceux qui prétendent que les guillemets simples et doubles sont identiques en Python ont tout simplement tort.

sinon dans le code suivant, la chaîne de caractères double-quoted n'aurait pas pris un supplément de 4,5% de plus pour Python à traiter:

import time

time_single = 0
time_double = 0

for i in range(10000000):
    # String Using Single Quotes
    time1 = time.time()
    str_single1 = 'Somewhere over the rainbow dreams come true'
    str_single2 = str_single1
    time2 = time.time()
    time_elapsed = time2 - time1
    time_single += time_elapsed

    # String Using Double Quotes 
    time3 = time.time()
    str_double1 = "Somewhere over the rainbow dreams come true"
    str_double2 = str_double1
    time4 = time.time()
    time_elapsed = time4 - time3
    time_double += time_elapsed

print 'Time using single quotes: ' + str(time_single)
print 'Time using double quotes: ' + str(time_double)

sortie:

>python_quotes_test.py
Time using single quotes: 13.9079978466
Time using double quotes: 14.5360121727

donc si vous voulez du code rapide et propre et respectable où vous semblez connaître vos affaires, utilisez des guillemets simples pour les chaînes chaque fois que possible. Vous dépenserez aussi moins l'énergie en sautant la touche shift.

-3
répondu gseattle 2014-08-27 12:45:32