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

14voto

aalaap Punkte 3872

Einfachste Lösung

Wenn Sie nur print ohne Argumente, wird eine leere Zeile ausgegeben.

print

Sie können die Ausgabe wie folgt in eine Datei leiten (in Ihrem Beispiel):

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

Sie ist nicht nur betriebssystemunabhängig (ohne dass man die os Paket), es ist auch besser lesbar als wenn man \n innerhalb von Zeichenketten.

Erläuterung

En print() Funktion hat ein optionales Schlüsselwortargument für das Ende der Zeichenkette, das end die standardmäßig das Zeilenumbruchzeichen des Betriebssystems verwendet, z. B.. \n . Also, wenn Sie anrufen print('hello') druckt Python tatsächlich 'hello' + '\n' . Das bedeutet, dass Sie beim Anrufen nur print ohne irgendwelche Argumente, es wird tatsächlich gedruckt '' + '\n' , was zu einem Zeilenumbruch führt.

Alternative

Verwenden Sie mehrzeilige Zeichenfolgen.

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

11voto

mhawke Punkte 79590

In Python können Sie einfach den Zeilenumbruch verwenden, d. h. \n

11voto

Rea Haas Punkte 1068

Wie in anderen Antworten erwähnt: "Das neue Zeilenzeichen ist \n. Er wird innerhalb einer Zeichenkette verwendet".

Ich habe herausgefunden, dass die einfachste und lesbarste Methode darin besteht, die Funktion "format" zu verwenden, wobei nl als Name für eine neue Zeile verwendet wird, und die zu druckende Zeichenkette genau in das Format umzubrechen, in dem sie gedruckt werden soll:

Python 2:

print("line1{nl}"
      "line2{nl}"
      "line3".format(nl="\n"))

Python 3:

nl = "\n"
print(f"line1{nl}"
      f"line2{nl}"
      f"line3")

Das wird ausgegeben:

line1
line2
line3

Auf diese Weise wird die Aufgabe erfüllt, und auch die Lesbarkeit des Codes ist hoch :)

9voto

Levon Punkte 134187

Das Gleiche gilt für '\n' obwohl Sie wahrscheinlich nicht die '\r' . Gibt es einen Grund, warum Sie es in Ihrer Java-Version haben? Wenn Sie es brauchen/wollen, können Sie es auf die gleiche Weise auch in Python verwenden.

7voto

Trutane Punkte 1140

Es ist erwähnenswert, dass, wenn Sie eine Zeichenkette mit der interaktiven Python-Shell oder einem Jupyter-Notebook die \n und andere Zeichenketten mit Backslashed wie \t werden wiedergegeben buchstäblich :

>>> gotcha = 'Here is some random message...'
>>> gotcha += '\nAdditional content:\n\t{}'.format('Yet even more great stuff!')
>>> gotcha
'Here is some random message...\nAdditional content:\n\tYet even more great stuff!'

Zeilenumbrüche, Tabulatoren und andere nicht gedruckte Sonderzeichen werden als Leerzeichen wiedergegeben nur beim Drucken oder in eine Datei geschrieben:

>>> print('{}'.format(gotcha))
Here is some random message...
Additional content:
    Yet even more great stuff!

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