web-dev-qa-db-fra.com

En Python, est-il possible d'échapper aux caractères de nouvelle ligne lors de l'impression d'une chaîne?

Je veux la nouvelle ligne \n pour apparaître explicitement lors de l’impression d’une chaîne extraite ailleurs. Donc, si la chaîne est 'abc\ndef', je ne veux pas que cela se produise:

>>> print(line)
abc
def

mais au lieu de cela:

>>> print(line)
abc\ndef

Existe-t-il un moyen de modifier print, ou de modifier l'argument, ou peut-être une autre fonction entièrement, pour accomplir cela?

50
Tyler

Une autre façon d’arrêter python en utilisant des caractères d’échappement est d’utiliser une chaîne brute comme celle-ci:

>>> print(r"abc\ndef")
abc\ndef

ou

>>> string = "abc\ndef"
>>> print (repr(string))
>>> 'abc\ndef'

le seul moyen d'utiliser repr() est qu'il met votre chaîne entre guillemets simples, ce qui peut s'avérer utile si vous souhaitez utiliser une citation.

51
PurityLake

Il suffit de l'encoder avec le 'string_escape' codec.

>>> print "foo\nbar".encode('string_escape')
foo\nbar

En python3, 'string_escape' est devenu unicode_escape. De plus, nous devons être un peu plus prudents sur les octets/unicode afin que cela implique un décodage après le codage:

>>> print("foo\nbar".encode("unicode_escape").decode("utf-8"))

référence unicode_escape

78
mgilson

Méthode la plus simple: str_object.replace("\n", "\\n")

Les autres méthodes sont meilleures si vous voulez afficher tous caractères d'échappement, mais si vous vous souciez uniquement des nouvelles lignes, utilisez simplement un remplacement direct.

18
ACEfanatic02