web-dev-qa-db-fra.com

Comment spécifier de nouvelles lignes sur Python lors de l'écriture sur des fichiers?

Par rapport à Java (dans une chaîne), vous feriez quelque chose comme "First Line\r\nSecond Line".

Alors, comment feriez-vous cela en Python, pour écrire plusieurs lignes dans un fichier normal?

256
FabianCook

Cela dépend de la façon dont vous voulez être correct. \n fera généralement le travail. Si vous voulez vraiment bien faire les choses, vous recherchez le caractère de nouvelle ligne dans le package os . (Il s’appelle en fait linesep.)

Remarque: lorsque vous écrivez dans des fichiers à l'aide de l'API Python, n'utilisez pas os.linesep. Il suffit d'utiliser \n; Python traduit automatiquement cela en caractère de nouvelle ligne approprié pour votre plate-forme.

294
Charlie Martin

Le nouveau caractère de ligne est \n. Il est utilisé à l'intérieur d'une chaîne.

Exemple:

    print 'First line \n Second line' 

\n est le caractère de nouvelle ligne.

Cela donnerait le résultat:

First line
 Second line
41
python_powered

Vous pouvez écrire les nouvelles lignes séparément ou dans une seule chaîne, ce qui est plus facile.

Exemple 1

Contribution

line1 = "hello how are you"
line2 = "I am testing the new line escape sequence"
line3 = "this seems to work"

Vous pouvez écrire le '\ n' séparément:

file.write(line1)
file.write("\n")
file.write(line2)
file.write("\n")
file.write(line3)
file.write("\n")

Sortie

hello how are you
I am testing the new line escape sequence
this seems to work

Exemple 2

Contribution

Comme d'autres l'ont souligné dans les réponses précédentes, placez le\n aux points appropriés de votre chaîne:

line = "hello how are you\nI am testing the new line escape sequence\nthis seems to work"

file.write(line)

Sortie

hello how are you
I am testing the new line escape sequence
this seems to work
18
Homam Bahrani

Dans Python, vous pouvez simplement utiliser le caractère de nouvelle ligne, c'est-à-dire \n

10
mhawke

Si vous entrez plusieurs lignes de texte à la fois, je trouve que c'est le format le plus lisible.

file.write("\
Life's but a walking shadow, a poor player\n\
That struts and frets his hour upon the stage\n\
And then is heard no more: it is a tale\n\
Told by an idiot, full of sound and fury,\n\
Signifying nothing.\n\
")

Le\à la fin de chaque ligne échappe à la nouvelle ligne (ce qui provoquerait une erreur).

9
fredcallaway

Solution la plus simple

Si vous appelez uniquement print sans aucun argument, une ligne vide sera générée.

print

Vous pouvez diriger la sortie vers un fichier comme celui-ci (en prenant pour exemple):

f = open('out.txt', 'w')
print 'First line' >> f
print >> f
print 'Second line' >> f
f.close()

Non seulement il est indépendant du système d'exploitation (sans même avoir à utiliser le paquetage os), il est également plus lisible que de mettre \n dans des chaînes.

Explication

La fonction print() possède un mot-clé facultatif pour la fin de la chaîne, appelé end, qui utilise par défaut le caractère de nouvelle ligne du système d'exploitation, par exemple. \n. Ainsi, lorsque vous appelez print('hello'), Python est en train d’imprimer 'hello' + '\n'. Ce qui signifie que lorsque vous appelez simplement print sans aucun argument, vous imprimez en fait '' + '\n', ce qui entraîne une nouvelle ligne.

Alternative

Utilisez des chaînes multi-lignes.

s = """First line
    Second line
    Third line"""
f = open('out.txt', 'w')
print s >> f
f.close()
7
aalaap

\ n - l'insertion de caractères de nouvelle ligne simples fonctionne:

# Here's the test example - string with newline char :
In [36]: test_line = "Hi!!!\n testing first line.. \n testing second line.. \n and third line....."

# Output:
In [37]: print(test_line)

Hi!!!
 testing first line.. 
 testing second line.. 
 and third line.....
4
Surya

De la même manière avec '\n', bien que vous n’ayez probablement pas besoin de '\r'. Y a-t-il une raison pour laquelle vous l'avez dans votre version Java? Si vous en avez besoin/voulez, vous pouvez également l’utiliser de la même manière dans Python.

4
Levon

La plupart des caractères d'échappement des chaînes de caractères de Java sont également valides en Python, tels que "\ r", "\ n"

2
dolaameng