¿Cómo escribo una "pestaña" en Python?

127

Digamos que tengo un archivo. ¿Cómo escribo "hola" TAB "alex"?

TIMEX
fuente
66
tab implica '\ t'
Pratik

Respuestas:

154

Este es el código:

f = open(filename, 'w')
f.write("hello\talex")

El \tinterior de la cadena es la secuencia de escape para la tabulación horizontal.

Simone
fuente
55
Usar print "a\tb"me da a (8 spaces)ben el cmdencendido Windows. ¿Por qué imprime 8 espacios en lugar del carácter de tabulación?
Iulian Onofrei
¿Qué más estabas esperando?
Simone
8
Para mostrara (tab character)b
Iulian Onofrei
@IulianOnofrei Un carácter de tabulación es un carácter que no se imprime, también conocido como espacio en blanco. No ve nada cuando presiona la tecla Tab. Simplemente mueve el texto por un número predeterminado de espacios. Tal vez puedas dibujar en los personajes lo que quieres que aparezca. ¿Es ->?
Rick Henderson
44
@RickHenderson Eso no es cierto, un carácter de tabulación no es solo un número de espacios. Tal vez su editor esté configurado para insertar espacios al presionar la pestaña. "" es una pestaña "" es un espacio. Es posible que no vea la diferencia aquí, pero abra Word / Libre y verá la diferencia.
Sativa
27

El manual de referencia de Python incluye varios literales de cadena que se pueden usar en una cadena. Estas secuencias especiales de caracteres se reemplazan por el significado previsto de la secuencia de escape.

Aquí hay una tabla de algunas de las secuencias de escape más útiles y una descripción de la salida de ellas.

Escape Sequence       Meaning
\t                    Tab
\\                    Inserts a back slash (\)
\'                    Inserts a single quote (')
\"                    Inserts a double quote (")
\n                    Inserts a ASCII Linefeed (a new line)

Ejemplo básico

Si quisiera imprimir algunos puntos de datos separados por un espacio de tabulación, podría imprimir esta cadena.

DataString = "0\t12\t24"
print (DataString)

Devoluciones

0    12    24

Ejemplo de listas

Aquí hay otro ejemplo en el que estamos imprimiendo los elementos de la lista y queremos especificar los elementos mediante una TAB.

DataPoints = [0,12,24]
print (str(DataPoints[0]) + "\t" + str(DataPoints[1]) + "\t" + str(DataPoints[2]))

Devoluciones

0    12    24

Cuerdas crudas

Tenga en cuenta que las cadenas sin formato (una cadena que incluye un prefijo "r"), los literales de cadena se ignorarán. Esto permite que estas secuencias especiales de caracteres se incluyan en cadenas sin cambiarlas.

DataString = r"0\t12\t24"
print (DataString)

Devoluciones

0\t12\t24

Que tal vez una salida no deseada

Longitudes de cuerda

También debe tenerse en cuenta que los literales de cadena tienen solo un carácter de longitud.

DataString = "0\t12\t24"
print (len(DataString))

Devoluciones

7

La cadena sin procesar tiene una longitud de 9.

CodeCupboard
fuente
Necesito tener un espacio entre mis elementos de alrededor de la mitad \t. ¿Cómo puedo hacer esto?
seralouk
25

Puede usar \ t en un literal de cadena:

"hello\talex"

Knio
fuente
14

Por lo general, se encuentra \ten las interfaces de línea de comandos, que convertirán el carácter \ten el carácter de tabulación de espacios en blanco.

Por ejemplo, hello\talex-> hello--->alex.

Darbio
fuente
9

Como no se mencionó en ninguna respuesta, en caso de que desee alinear y espaciar su texto, puede usar las funciones de formato de cadena. (por encima de python 2.5) Por supuesto, en \trealidad es un token TAB, mientras que el método descrito genera espacios.

Ejemplo:

print "{0:30} {1}".format("hi", "yes")
> hi                             yes

Otro ejemplo, alineado a la izquierda:

print("{0:<10} {1:<10} {2:<10}".format(1.0, 2.2, 4.4))
>1.0        2.2        4.4 
usuario1767754
fuente
¿Cómo dar un carácter de tabulación para imprimir un elemento de matriz tridimensional como 0 12 24 como 3 filas?
priya raj
Agregado a la respuesta
usuario1767754
0

Aquí hay algunas formas más exóticas de Python 3 para obtener "hola" TAB "alex" (probado con Python 3.6.10):

"hello\N{TAB}alex"

"hello\N{tab}alex"

"hello\N{TaB}alex"

"hello\N{HT}alex"

"hello\N{CHARACTER TABULATION}alex"

"hello\N{HORIZONTAL TABULATION}alex"

"hello\x09alex"

"hello\u0009alex"

"hello\U00000009alex"

En realidad, en lugar de usar una secuencia de escape, es posible insertar el símbolo de tabulación directamente en el literal de cadena. Aquí está el código con un carácter de tabulación para copiar y probar:

"hello alex"

Si la pestaña de la cadena de arriba no se perderá en ningún lugar durante la copia de la cadena, entonces "print (repr (<cadena de arriba>)" debería imprimir 'hola \ talex'.

Consulte la documentación respectiva de Python como referencia.

usuario2273896
fuente