Como escrevo uma "guia" em Python?

127

Digamos que eu tenho um arquivo. Como escrevo "olá" TAB "alex"?

TIMEX
fonte
6
tab implica '\ t'
Pratik

Respostas:

154

Este é o código:

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

O \tinterior da string é a sequência de escape para a tabulação horizontal.

Simone
fonte
5
Usando print "a\tb"me dá a (8 spaces)bna cmdna Windows. Por que está imprimindo 8 espaços em vez do caractere de tabulação.
Iulian Onofrei 15/03/2015
O que mais você estava esperando?
Simone
8
Para exibira (tab character)b
Iulian Onofrei 16/03/2015
@IulianOnofrei Um caractere de tabulação é um caractere não imprimível, também conhecido como espaço em branco. Você não vê nada quando pressiona a tecla Tab. Apenas move o texto por um número padrão de espaços. Talvez você possa desenhar nos caracteres o que deseja que apareça. É ->?
Rick Henderson
4
@ RickHenderson Isso não é verdade, um caractere de tabulação não é apenas um número de espaços. Talvez o seu editor esteja configurado para inserir espaços ao pressionar a tecla tab. "" é uma guia "" é um espaço. Você pode não ver a diferença aqui, mas abra o Word / Libre e você verá a diferença.
Sativa
27

O manual de referência do Python inclui vários literais de string que podem ser usados ​​em uma string. Essas seqüências especiais de caracteres são substituídas pelo significado pretendido da sequência de escape.

Aqui está uma tabela de algumas das seqüências de escape mais úteis e uma descrição da saída delas.

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)

Exemplo básico

Se eu quisesse imprimir alguns pontos de dados separados por um espaço de tabulação, eu poderia imprimir essa string.

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

Devoluções

0    12    24

Exemplo para listas

Aqui está outro exemplo em que estamos imprimindo os itens da lista e queremos separar os itens por uma TAB.

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

Devoluções

0    12    24

Raw Strings

Observe que cadeias brutas (uma cadeia que inclui um prefixo "r"), literais de cadeia serão ignoradas. Isso permite que essas seqüências especiais de caracteres sejam incluídas nas seqüências de caracteres sem serem alteradas.

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

Devoluções

0\t12\t24

Que talvez uma saída indesejada

Comprimento das cordas

Também deve ser observado que os literais de string têm apenas um caractere de comprimento.

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

Devoluções

7

A cadeia bruta tem um comprimento de 9.

CodeCupboard
fonte
Eu preciso ter um espaço entre os meus elementos que é cerca de metade \t. Como posso fazer isso?
seralouk
25

Você pode usar \ t em uma string literal:

"hello\talex"

Knio
fonte
14

Geralmente é \tem interfaces de linha de comando, que convertem o caractere \tno caractere de tabulação de espaço em branco.

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

Darbio
fonte
9

Como não foi mencionado em nenhuma resposta, caso deseje alinhar e espaçar seu texto, você pode usar os recursos de formato de sequência. (acima do python 2.5) É claro que, \tna verdade, é um token TAB, enquanto o método descrito gera espaços.

Exemplo:

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

Outro exemplo, alinhado à esquerda:

print("{0:<10} {1:<10} {2:<10}".format(1.0, 2.2, 4.4))
>1.0        2.2        4.4 
user1767754
fonte
como dar o caractere de tabulação para imprimir o elemento da matriz tridimensional como 0 12 24 como 3 linhas?
priya raj
Adicionado à resposta
user1767754
0

Aqui estão algumas maneiras mais exóticas do Python 3 de obter "olá" TAB "alex" (testado com o 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"

Na verdade, em vez de usar uma sequência de escape, é possível inserir o símbolo da tabulação diretamente na string literal. Aqui está o código com um caractere de tabulação para copiar e tentar:

"hello alex"

Se a guia na string acima não for perdida em nenhum lugar durante a cópia da string, "print (repr (<string from above>)" deve imprimir 'hello \ talex'.

Veja a documentação respectiva do Python para referência.

user2273896
fonte