Python >> Tutoriel Python >  >> Python

Impression Python sans caractères d'échappement

Formulation du problème

Python a des "caractères d'échappement" spéciaux qui commencent par une seule barre oblique inverse comme \n , \t , et \" . Si vous imprimez une chaîne avec des caractères d'échappement, Python imprime la signification spéciale, par exemple, une nouvelle ligne pour le caractère de nouvelle ligne \n .

s = "Learn\tprogramming\nwith\t\tFinxter!"
print(s)

Vous pouvez voir que la sortie imprime la signification spéciale des caractères d'échappement :

Learn	programming
with		Finxter!

Comment imprimer la chaîne dans sa forme originale sans interpréter les caractères d'échappement ?

Voici ce que nous voulons :

s = "Learn\tprogramming\nwith\t\tFinxter!"
print(s)
# Learn\tprogramming\nwith\t\tFinxter!

Solution 1 :repr() - Imprimer sans interpréter les caractères d'échappement

Si vous voulez imprimer les caractères d'échappement dans une chaîne sans les interpréter, c'est-à-dire ignorer leur signification particulière, utilisez le repr(s) intégré fonction sur la chaîne s .

L'exemple suivant montre comment la sortie d'impression n'a pas été affectée par les caractères d'échappement—Python imprime sans la signification particulière des caractères d'échappement \t et \n .

s = "Learn\tprogramming\nwith\t\tFinxter!"
print(repr(s))
# Learn\tprogramming\nwith\t\tFinxter!

repr(obj) intégré de Python La fonction renvoie la représentation sous forme de chaîne standard de l'objet fourni. La fonction appelle en interne la méthode obj.__repr__() qui est défini par défaut pour tous les objets.

Vous pouvez en savoir plus sur la fonction dans mon article de blog détaillé et dans le didacticiel vidéo suivant :

Solution 2 :Imprimez la chaîne brute pour ignorer la signification spéciale des caractères d'échappement

Alternativement, vous pouvez imprimer une chaîne brute r"..." pour imprimer la chaîne sans interpréter les caractères d'échappement. Par exemple, l'instruction print('r"Learn\tprogramming\nwith\t') imprimera simplement la chaîne brute "Learn\tprogramming\nwith\t" .

s = r"Learn\tprogramming\nwith\t\tFinxter!"
print(s)
# Learn\tprogramming\nwith\t\tFinxter

Cette solution est en fait la même que la première car Python appelle en interne le repr() fonction sur la chaîne brute.

Cependant, que se passe-t-il si vous souhaitez réellement supprimer tous les caractères d'échappement de la sortie de chaîne ?

Solution 3 :Filtrage de tous les caractères d'échappement avec string.isalnum()

Pour nettoyer une chaîne d'échappement et de tous les autres caractères spéciaux, vous pouvez filtrer tous les caractères qui ne sont pas alphanumériques en utilisant le string.isalnum() méthode comme ceci :''.join(c for c in s if c.isalnum()) . Cela renvoie une nouvelle chaîne exempte de tous les caractères d'échappement.

Examinons cet extrait de code qui supprime les caractères d'échappement de nouvelle ligne et de tableau de la chaîne :

s = 'Learn\tprogramming\nwith\t\tFinxter!'
s_clean = ''.join(c for c in s if c.isalnum())
print(s_clean)
# LearnprogrammingwithFinxter

Ce code utilise trois concepts :

  • Le ''.join() méthode pour coller ensemble tous les caractères dans un itérable. En savoir plus sur cette méthode dans notre tutoriel de blog détaillé.
  • Expression de générateur <... for ... in ... if ...> pour créer dynamiquement un itérable de caractères et filtrer chaque caractère non alphanumérique. En savoir plus sur cette méthode dans notre guide complet du blog.
  • Le string.isalnum() méthode pour vérifier pour un caractère donné s'il s'agit d'un caractère non spécial. En savoir plus ici.

Je vous suggère de regarder l'introduction suivante sur l'expression du générateur si vous ne vous sentez pas encore très confiant :