2011-09-20 45 views
9

Hola, estoy tratando de tener una cadena que contenga tanto comillas simples como dobles en python - ('"). La razón por la que necesito esta expresión es para usarla como entrada a algún comando de lote externo. Sin embargo, python siempre corrige esto automáticamente a (\ '"). Me pregunto si hay una manera de juntar una cita doble y una sola cita tal como está. Gracias.Tener comillas simples y dobles en una cadena de pitón

+0

¿Quiere decir que la barra diagonal inversa está allí cuando la imprime, o solo cuando la mira en el intérprete? –

+6

"python siempre corrige automáticamente"? ¿Dónde? ¿Cómo? Por favor, 'imprime' el resultado para estar ** seguro ** de lo que estás obteniendo. Tenga en cuenta que lo que ve en 'repr()' y lo que ve en el prompt '>>>' no coincide con lo que ** en realidad ** en la cadena. Las versiones 'repr()' y '>>>' son código fuente de Python. No es el valor real Por favor ** actualice ** su pregunta con ejemplos específicos. –

Respuesta

20

Utilice comillas triples.

"""Trip'le qu"oted""" 

o

'''Ag'ain qu"oted''' 

Tenga en cuenta que sólo porque Python repr es una cadena con barras invertidas, no quiere decir que en realidad añadido barras de la cadena, que sólo puede estar mostrando caracteres especiales escapó.

Utilizando un ejemplo del tutorial de Python:

>>> len('"Isn\'t," she said.') 
18 
>>> len('''"Isn't," she said.''') 
18 

A pesar de que la segunda cadena aparece un carácter más corto, ya que no tiene una barra invertida en ella, en realidad es la misma longitud - la barra invertida es sólo para escapar de la comilla simple en la secuencia de una sola cita.

Otro ejemplo:

>>> for c in '''"Isn't," she said.''': 
...  sys.stdout.write(c) 
... 
"Isn't," she said. 
>>> 

Si usted no deje que Python formato a la cadena, se puede ver la cadena no ha cambiado, sólo estaba tratando de Python para mostrar de forma inequívoca.

Ver el tutorial section on strings.

+0

Gracias por la respuesta. Sin embargo, cuando escribí s = "" "'" "" ", y cuando compruebo el valor de s, aún muestra' \ '"'. Estoy pasando esta cadena a la línea de comando, por lo que tiene que ser '' "'. – GHO

+0

@GHO vea el comentario de S.Lott anterior. –

+0

@GHO Creo que lo expliqué bastante bien en la respuesta (agregué otro ejemplo) - el '\' no está realmente allí (en la cadena), Python solo lo está usando para mostrar que '' 'no termina la cadena, a diferencia de los que están al principio y al final. En realidad, cambie su cadena, cómo se muestra. – agf

4

utilizar cadenas triple citado:

""" This 'string' contains "both" types of quote """ 
''' So ' does " this ''' 
+0

Gracias por su respuesta. Sin embargo, todavía tengo el problema como he comentado anteriormente. Por cierto, estoy usando python 2.7 – GHO

+2

@GHO: "Todavía tengo el problema". significa (1) publicar el código real en la pregunta. (2) publicar el resultado real de una declaración real de 'impresión'. En la pregunta. (3) publicar el error real que está obteniendo. En la pregunta. Nosotros - - lamentablemente - no puedo adivinar qué código estás usando. –

0

Aunque su más prolija, una forma alternativa sería hacer lo siguiente:

str1 = 'la parte que tiene el doble 's' en él '

str1 = str1 + 'la parte que tiene un solo 's' en él'

0

Usted puede ya sea (1) encerrar la cadena entre comillas dobles y escapar de la Dou las comillas simples con \ o (2) encierran la cadena en comillas simples y escapan las comillas simples con \. Por ejemplo:

>>> print('She is 5\' 6" tall.') 
She is 5' 6" tall. 
>>> print("He is 5' 11\" tall.") 
He is 5' 11" tall. 
1

El problema real es, la sentencia print() no imprime el \ pero cuando se hace referencia al valor de la cadena en el intérprete, muestra un "\" siempre es un apóstrofe usado . Por ejemplo, consulte el siguiente código:

>>> s = "She said, \"Give me Susan's hat\"" 
    >>> print(s) 
    She said, "Give me Susan's hat" 
    >>> s 
    'She said, "Give me Susan\'s hat"' 

Esto es independiente de si utiliza comillas simples, dobles o triples para encerrar la cadena.

>>> s = """She said, "Give me Susan's hat" """ 
    >>> s 
    'She said, "Give me Susan\'s hat" ' 

Otra manera de incluir lo siguiente:

>>> s = '''She said, "Give me Susan's hat" ''' 
    >>> s 
    'She said, "Give me Susan\'s hat" ' 
    >>> s = '''She said, "Give me Susan\'s hat" ''' 
    >>> s 
    'She said, "Give me Susan\'s hat" ' 

Así que, básicamente, pitón no elimina el \ cuando se hace referencia al valor de s, pero lo retira cuando intenta imprimir. A pesar de este hecho, cuando te refieres a la longitud de s, no cuenta la "\". Por ejemplo.,

>>> s = '''"''"''' 
    >>> s 
    '"\'\'"' 
    >>> print(s) 
    "''" 
    >>> len(s) 
    4 
0

la adición tanto de la comilla simple y doble en el uso proyectado pitón comillas (escapadas). Prueba esto, por ejemplo:

print(" just display ' and \" ") 

El \" le dice a Python este no es el final de la cadena entre comillas.

Cuestiones relacionadas