Comment écrire un «onglet» en Python?


127

Disons que j'ai un fichier. Comment écrire "bonjour" TAB "alex"?


6
tab implique '\ t'
Pratik

Réponses:


154

Voici le code:

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

L' \tintérieur de la chaîne est la séquence d'échappement pour la tabulation horizontale.


5
L' utilisation print "a\tb"me donne a (8 spaces)bdans le cmdsur Windows. Pourquoi imprime-t-il 8 espaces au lieu du caractère de tabulation.
Iulian Onofrei

Que vous attendiez-vous d'autre?
Simone

8
À affichera (tab character)b
Iulian Onofrei

@IulianOnofrei Un caractère de tabulation est un caractère non imprimable, également appelé espace blanc. Vous ne voyez rien lorsque vous appuyez sur la touche Tab. Il déplace simplement le texte d'un nombre d'espaces par défaut. Peut-être que vous pouvez dessiner en caractères ce que vous voulez faire apparaître. Est-ce ->?
Rick Henderson

4
@RickHenderson Ce n'est pas vrai, un caractère de tabulation n'est pas seulement un certain nombre d'espaces. Peut-être que votre éditeur est configuré pour insérer des espaces en appuyant sur la tabulation. "" est un onglet "" est un espace. Vous ne voyez peut-être pas la différence ici, mais ouvrez Word / Libre et vous verrez la différence.
Sativa

27

Le manuel de référence Python comprend plusieurs littéraux de chaîne qui peuvent être utilisés dans une chaîne. Ces séquences spéciales de caractères sont remplacées par la signification voulue de la séquence d'échappement.

Voici un tableau de certaines des séquences d'échappement les plus utiles et une description de leur sortie.

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)

Exemple de base

Si je voulais imprimer des points de données séparés par un espace de tabulation, je pourrais imprimer cette chaîne.

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

Retour

0    12    24

Exemple de listes

Voici un autre exemple où nous imprimons les éléments de la liste et nous voulons séparer les éléments par une tabulation.

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

Retour

0    12    24

Chaînes brutes

Notez que les chaînes brutes (une chaîne qui inclut un préfixe "r"), les chaînes littérales seront ignorées. Cela permet à ces séquences spéciales de caractères d'être incluses dans des chaînes sans être modifiées.

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

Retour

0\t12\t24

Ce qui peut être une sortie indésirable

Longueurs de chaîne

Il convient également de noter que les littéraux de chaîne ne comportent qu'un seul caractère.

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

Retour

7

La chaîne brute a une longueur de 9.


J'ai besoin d'un espace entre mes éléments d'environ la moitié \t. Comment puis-je faire ceci?
seralouk le

25

Vous pouvez utiliser \ t dans une chaîne littérale:

"hello\talex"


14

C'est généralement \tdans les interfaces de ligne de commande, qui convertissent le \tcaractère en caractère de tabulation d'espaces.

Par exemple, hello\talex-> hello--->alex.


9

Comme cela n'a été mentionné dans aucune réponse, juste au cas où vous voudriez aligner et espacer votre texte, vous pouvez utiliser les fonctionnalités de format de chaîne. (ci-dessus python 2.5) Il \ts'agit bien sûr d' un jeton TAB alors que la méthode décrite génère des espaces.

Exemple:

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

Un autre exemple, aligné à gauche:

print("{0:<10} {1:<10} {2:<10}".format(1.0, 2.2, 4.4))
>1.0        2.2        4.4 

comment donner un caractère de tabulation pour imprimer un élément de tableau en 3 dimensions comme 0 12 24 comme 3 lignes?
priya raj

Ajouté à la réponse
user1767754

0

Voici quelques moyens plus exotiques de Python 3 pour obtenir "hello" TAB "alex" (testé avec 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 fait, au lieu d'utiliser une séquence d'échappement, il est possible d'insérer un symbole de tabulation directement dans la chaîne littérale. Voici le code avec un caractère de tabulation à copier et à essayer:

"hello alex"

Si l'onglet dans la chaîne ci-dessus ne sera perdu nulle part pendant la copie de la chaîne, alors "print (repr (<string from above>)" devrait afficher 'hello \ talex'.

Voir la documentation Python respective pour référence.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.