special single raw escape escapar python string quotes double-quotes

single - raw string python



¿Hay alguna diferencia entre "cadena" y "cadena" en Python? (9)

Esta pregunta ya tiene una respuesta aquí:

En PHP, una cadena incluida en "comillas dobles" se analizará para las variables a reemplazar, mientras que una cadena encerrada en "comillas simples" no lo hará. En Python, ¿esto también se aplica?


Hay 3 formas en que puede codificar cadenas en python: "string" ''string'' "" "string string" "" todas producen el mismo resultado.


Las cadenas simples y dobles entrecomilladas en Python son idénticas. La única diferencia es que las cadenas de comillas simples pueden contener caracteres de comillas dobles sin guardar, y viceversa. Por ejemplo:

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

Por otra parte, hay cadenas de comillas triples, que permiten descartar tanto caracteres de cotización como líneas nuevas.

Puede sustituir variables en una cadena usando especificadores con nombre y el comando local () incorporado:

name = ''John'' lastname = ''Smith'' print ''My name is %(name)s %(lastname)s'' % locals() # prints ''My name is John Smith''


No hay diferencia en Python, y realmente puede usarlo para su ventaja al generar XML. La sintaxis correcta de XML requiere comillas dobles alrededor de los valores de los atributos, y en muchos idiomas, como Java, esto te obliga a escapar de ellos al crear una cadena como esta:

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

Pero en Python, simplemente usa la otra cita y asegúrate de usar la cita final coincidente como esta:

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

Muy bonito ¿eh? También puede usar tres comillas dobles para iniciar y finalizar cadenas de múltiples líneas, con las EOL incluidas así:

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''."""


En algunos otros idiomas, los metacaracteres no se interpretan si usa comillas simples. Toma este ejemplo en Ruby:

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

En Python, si quiere que la cadena se tome literalmente, puede usar cadenas sin formato (una cadena precedida por el carácter ''r''):

>>> print ''string1/nstring2'' string1 string2 >>> print r''string1/nstring2'' string1/nstring2


Python es uno de los pocos (?) Idiomas donde "y" tienen una funcionalidad idéntica. La opción para mí generalmente depende de lo que hay dentro. Si voy a citar una cadena que tiene comillas simples, usaré comillas dobles y viceversa, para evitar tener que escapar de los personajes de la cadena.

Ejemplos:

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

Esto está documentado en la página "Literales de cadenas" de la documentación de python:


Sí. Quienes afirman que las comillas simples y dobles son idénticas en Python son simplemente erróneas.

De lo contrario, en el siguiente código, la secuencia de comillas dobles no habría tomado un 4,5% extra más para que Python lo procese:

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)

Salida:

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

Por lo tanto, si desea un código respetable de limpieza rápida en el que parezca conocer sus cosas, use comillas simples para cadenas siempre que sea práctico. También gastará menos energía omitiendo la tecla Mayús.


El intérprete interactivo de Python prefiere comillas simples:

>>> "text" ''text'' >>> ''text'' ''text''

Esto podría ser confuso para principiantes, así que me quedaría con comillas simples (a menos que tenga diferentes estándares de codificación).


La diferencia entre "y" las comillas de las cuerdas está en el estilo, excepto que una elimina la necesidad de escapar de la otra dentro del contenido de la cuerda.

Estilo

PEP8 recomienda una regla consistente, PEP257 sugiere que las cadenas de texto usen comillas dobles triples.

En Python, las cadenas de una sola cita y las cadenas de comillas dobles son las mismas. Este PEP no hace una recomendación para esto. Elige una regla y mantente firme. Sin embargo, cuando una cadena contiene caracteres de comillas simples o dobles, use la otra para evitar barras diagonales inversas en la cadena. Mejora la legibilidad.

Para cadenas de comillas triples, utilice siempre caracteres de comillas dobles para ser coherentes con la convención docstring en PEP 257.

Ampliamente utilizado, sin embargo, es la práctica preferir las comillas dobles para las cadenas de lenguaje natural (incluida la interpolación), por lo tanto, cualquier cosa que sea potencialmente candidata para I18N. Y comillas simples para cadenas técnicas: símbolos, caracteres, rutas, opciones de línea de comando, REGEXes técnicos, ...

(Por ejemplo, al preparar el código para I18N, ejecuto un REGEX semiautomático convirtiendo cadenas de comillas dobles rápidamente para usar, por ejemplo, gettext )


No :

2.4.1. Literales de cadena y bytes

... En inglés simple: ambos tipos de literales se pueden encerrar en comillas simples ( '' ) o comillas dobles ( " ). También se pueden encerrar en grupos coincidentes de tres comillas simples o dobles (generalmente se las denomina triples -clasificadas). El carácter de barra invertida ( / ) se usa para escapar de caracteres que de otro modo tienen un significado especial, como nueva línea, barra invertida o el carácter de comillas ...