424 Stimmen

Wie kann ich neue Zeilen in einer Zeichenkette angeben, um mehrere Zeilen in eine Datei zu schreiben?

Wie kann ich in Python einen Zeilenumbruch in einer Zeichenkette angeben, so dass ich mehrere Zeilen in eine Textdatei schreiben kann?

6 Stimmen

Sie wissen schon, dass Pythons print funktioniert wie System.out.println in Java, und fügt automatisch einen Zeilenumbruch nach dem Text ein, richtig?

2 Stimmen

Les print Anweisung in Python kann auch verwendet werden, um in Dateien zu schreiben (die Details unterscheiden sich zwischen Python 2.x und Python 3.x, schauen Sie also in den Referenzdokumenten für Ihre Version nach). print in Python 2.x - print in Python 3.x

494voto

Charlie Martin Punkte 106684

Das hängt davon ab, wie korrekt Sie sein wollen. \n ist in der Regel ausreichend. Wenn Sie es wirklich richtig machen wollen, schlagen Sie das Zeilenumbruchzeichen in der os パッケージ . (Es heißt eigentlich linesep .)

Hinweis: Wenn Sie mit der Python-API in Dateien schreiben, verwenden Sie nicht die os.linesep . Verwenden Sie einfach \n Python übersetzt das automatisch in das richtige Zeilenumbruchzeichen für Ihre Plattform.

20 Stimmen

Aus dem Link, den Sie angegeben haben: "Verwenden Sie os.linesep nicht als Zeilenende, wenn Sie Dateien schreiben, die im Textmodus geöffnet sind (der Standard); verwenden Sie ein einzelnes ' \n ', und zwar auf allen Plattformen." Was meinen Sie also mit "richtig" und was sind die Gründe für ihren und Ihren Kommentar?

32 Stimmen

@Yasen: Unter Windows ist die Zeilenumbruchsequenz "\r\n" . Dies bedeutet, dass os.linesep wird sein "\r\n" . Wenn Sie im Textmodus in eine Datei schreiben, werden Zeilenumbrüche während des Schreibens übersetzt, d.h. jede "\n" in der Ausgabe wird übersetzt in "\r\n" in der resultierenden Datei. Sie können sich vorstellen, dass dies ein Problem ist, wenn der Text, den Sie schreiben, bereits Folgendes enthält "\r\n" Sequenzen: Das Ergebnis wird sein "\r\r\n" am Ende einer jeden Zeile. Zumindest nehme ich das an: Ich habe es noch nicht ausprobiert.

1 Stimmen

Für einen Zeilenumbruch, der eher format- als betriebssystemspezifisch ist, z. B. ein RFC 4180 -konforme CSV-Datei verwendet \r\n Wie kann man das tun, wenn \n könnte ausgeschrieben werden als \r\n , was zu \r\r\n in der Datei?

129voto

python_powered Punkte 1189

Das neue Zeilenzeichen lautet \n . Er wird innerhalb einer Zeichenkette verwendet.

Beispiel:

    print('First line \n Second line') 

donde \n ist das Zeilenumbruchzeichen.

Dies würde das Ergebnis liefern:

First line
 Second line

Wenn Sie Python 2 verwenden, brauchen Sie die Klammern bei der Druckfunktion nicht zu setzen.

40voto

Bandham Manikanta Punkte 1631

Plattformunabhängiger Leitungsschutzschalter: Linux, Windows und iOS

import os
keyword = 'physical'+ os.linesep + 'distancing'
print(keyword)

Ausgabe:

physical
distancing

31voto

Hom Bahrani Punkte 2379

Sie können die neuen Zeilen entweder einzeln oder in einer einzigen Zeichenfolge eingeben, was einfacher ist.

Beispiel 1

Eingabe

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

Sie können die ' \n ' getrennt:

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

出力

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

Beispiel 2

Eingabe

Wie bereits in den vorangegangenen Antworten erwähnt, sollten Sie die \n an den entsprechenden Stellen in Ihrer Zeichenfolge:

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

file.write(line)

出力

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

22voto

fredcallaway Punkte 1282

Hier ist eine besser lesbare Lösung, die auch dann korrekt funktioniert, wenn Sie sich nicht auf der obersten Einrückungsebene befinden (z. B. in einer Funktionsdefinition).

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X