Comment puis-je indiquer un saut de ligne dans une chaîne en Python, de sorte que je puisse écrire plusieurs lignes dans un fichier texte?
Réponses
Trop de publicités?La solution la plus simple
Si vous appelez simplement print
sans aucun argument, cela affichera une ligne vide.
print
Vous pouvez rediriger la sortie vers un fichier comme ceci (en considérant votre exemple) :
f = open('out.txt', 'w')
print 'Première ligne' >> f
print >> f
print 'Deuxième ligne' >> f
f.close()
Non seulement c'est agnostique au système d'exploitation (sans même avoir à utiliser le package os
), mais c'est également plus lisible que d'insérer \n
dans les chaînes de caractères.
Explication
La fonction print()
a un argument facultatif pour la fin de la chaîne, appelé end
, qui a pour valeur par défaut le caractère de nouvelle ligne du système d'exploitation, par exemple \n
. Ainsi, lorsque vous appelez print('hello')
, Python imprime en réalité 'hello' + '\n'
. Cela signifie que lorsque vous appelez simplement print
sans aucun argument, cela imprime en réalité '' + '\n'
, ce qui donne une nouvelle ligne.
Alternative
Utilisez des chaînes multi-lignes.
s = """Première ligne
Deuxième ligne
Troisième ligne"""
f = open('out.txt', 'w')
print s >> f
f.close()
Comme mentionné dans d'autres réponses : "Le caractère de nouvelle ligne est \n. Il est utilisé à l'intérieur d'une chaîne".
J'ai trouvé que la façon la plus simple et la plus lisible est d'utiliser la fonction "format", en utilisant nl comme nom pour une nouvelle ligne, et de formater la chaîne que vous souhaitez imprimer exactement comme vous allez l'imprimer :
Python 2 :
print("ligne1{nl}"
"ligne2{nl}"
"ligne3".format(nl="\n"))
Python 3 :
nl = "\n"
print(f"ligne1{nl}"
f"ligne2{nl}"
f"ligne3")
Cela affichera :
ligne1
ligne2
ligne3
De cette façon, cela effectue la tâche, tout en donnant une grande lisibilité du code :)
Il est bon de noter qu'en inspectant une chaîne à l'aide de la console Python interactive ou d'un Notebook Jupyter, les caractères d'échappement tels que \n
et d'autres chaînes avec des barrages comme \t
sont affichés littéralement:
>>> gotcha = 'Voici un message aléatoire...'
>>> gotcha += '\nContenu supplémentaire:\n\t{}'.format('Et encore plus de bonnes choses!')
>>> gotcha
'Voici un message aléatoire...\nContenu supplémentaire:\n\tEt encore plus de bonnes choses!'
Les sauts de lignes, les tabulations et les autres caractères spéciaux non imprimés sont affichés comme des espaces seulement lorsqu'ils sont imprimés ou écrits dans un fichier:
>>> print('{}'.format(gotcha))
Voici un message aléatoire...
Contenu supplémentaire:
Et encore plus de bonnes choses!