2012-01-29 24 views
41

Bien ... Cuando quiero hacer un comando "print" en python y necesito usar comillas, no sé cómo hacerlo sin cerrar la oración. Por ejemplo:Python - Usando comillas entre comillas

de impresión " 'una palabra que necesita entre comillas'"

Pero cuando trato de hacer lo que hice anteriormente, que terminan cerrando la pena y no puedo poner el palabra que necesito entre comillas.

¿Cómo puedo hacer eso?

Respuesta

129

Usted puede hacer esto en una de tres maneras:

1) y comillas simples y dobles juntas:

>>> print '"A word that needs quotation marks"' 
"A word that needs quotation marks" 

2) Escapar de las comillas dobles dentro de la cadena:

>>> print "\"A word that needs quotation marks\"" 
"A word that needs quotation marks" 

3) Usar cadenas de comillas triples:

>>> print """ "A word that needs quotation marks" """ 
"A word that needs quotation marks" 
+1

La mejor respuesta, aquí mismo. – Droogans

+4

Escapando de las comillas dobles, pero los espacios adicionales que ha agregado ahora son parte de la cadena, se solucionan fácilmente al deshacerse de los espacios. De manera similar con cadenas de comillas triples: los espacios adicionales se vuelven parte de la cadena, y no estoy seguro de cómo solucionar esto, ya que poner el interno "al lado del triple" provoca un error SyntaxError –

+0

@JamesPolley Estás en lo cierto acerca de caso # 3. He arreglado el caso # 2. –

3

Python acepta tanto "y" como comillas, por lo que podría hacer esto como:

>>> print '"A word that needs quotation marks"' 
"A word that needs quotation marks" 

Como alternativa, sólo escapar del interior "s

>>> print "\"A word that needs quotation marks\"" 
"A word that needs quotation marks" 
6

Es necesario para escapar de ella:

>>> print "The boy said \"Hello!\" to the girl" 
The boy said "Hello!" to the girl 
>>> print 'Her name\'s Jenny.' 
Her name's Jenny. 

Consulte la página de python para string literals.

2

utilizar el carácter de escape literal \

print("Here is, \"a quote\"") 

El carácter básicamente significa ignorar el contexto semántico de mi próximo Charcter, y tratar con él en su sentido literal.

1

en Python 3.2.2 en Windows,

print(""""A word that needs quotation marks" """) 

está bien. Creo que es la mejora del intérprete de Python.

0

También puede probar la suma de cadenas: print " "+'"'+'a word that needs quotation marks'+'"'

1

Un caso que es frecuente en los duplicados es el requisito de utilizar las cotizaciones de los procesos externos. Una solución para eso es no usar un shell, que elimina el requisito de un nivel de cotización.

os.system("""awk '/foo/ { print "bar" }' %""" % filename) 

útil puede ser reemplazado con

subprocess.call(['awk', '/foo/ { print "bar" }', filename]) 

(que también corrige el error que Shell metacaracteres en filename tendría que ser escapado de la cáscara, que el código original no pudo hacer, pero sin shell, no es necesario para eso).

Por supuesto, en la gran mayoría de los casos, no desea ni necesita un proceso externo en absoluto.

with open(filename) as fh: 
    for line in fh: 
     if 'foo' in line: 
      print("bar") 
Cuestiones relacionadas