Wie kann ich in Python einen Zeilenumbruch in einer Zeichenkette angeben, so dass ich mehrere Zeilen in eine Textdatei schreiben kann?
Antworten
Zu viele Anzeigen?\n - das einfache Einfügen von Zeilenumbrüchen funktioniert:
# 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....."
Ausgabe:
In [37]: print(test_line)
Hi!!!
testing first line..
testing second line..
and third line.....
In Python 3 übernimmt die Sprache die Kodierung von Zeilenumbrüchen in der plattformeigenen Darstellung für Sie. Das bedeutet \r\n
unter Windows, und nur \n
auf erwachsenen Systemen.
Selbst auf U*x-Systemen liefert das Lesen einer Datei mit Windows-Zeilenenden im Textmodus korrekte Ergebnisse für Text, d.h. jede \r
Zeichen vor dem \n
Zeichen werden stillschweigend gelöscht.
Wenn Sie die vollständige Kontrolle über die Bytes in der Datei benötigen, können Sie den Binärmodus verwenden. Dann entspricht jedes Byte genau einem Byte, und Python führt keine Übersetzung durch.
>>> # Write a file with different line endings, using binary mode for full control
>>> with open('/tmp/demo.txt', 'wb') as wf:
... wf.write(b'DOS line\r\n')
... wf.write(b'U*x line\n')
... wf.write(b'no line')
10
9
7
>>> # Read the file as text
>>> with open('/tmp/demo.txt', 'r') as text:
... for line in text:
... print(line, end='')
DOS line
U*x line
no line
>>> # Or more demonstrably
>>> with open('/tmp/demo.txt', 'r') as text:
... for line in text:
... print(repr(line))
'DOS line\n'
'U*x line\n'
'no line'
>>> # Back to bytes!
>>> with open('/tmp/demo.txt', 'rb') as binary:
... for line in binary:
... print(line)
b'DOS line\r\n'
b'U*x line\n'
b'no line'
>>> # Open in binary, but convert back to text
>>> with open('/tmp/demo.txt', 'rb') as binary:
... for line in binary:
... print(line.decode('utf-8'), end='')
DOS line
U*x line
no line
>>> # Or again in more detail, with repr()
>>> with open('/tmp/demo.txt', 'rb') as binary:
... for line in binary:
... print(repr(line.decode('utf-8')))
'DOS line\r\n'
'U*x line\n'
'no line'
\n trennt die Zeilen einer Zeichenkette. Im folgenden Beispiel schreibe ich die Datensätze in einer Schleife weiter. Jeder Datensatz wird getrennt durch \n
.
f = open("jsonFile.txt", "w")
for row_index in range(2, sheet.nrows):
mydict1 = {
"PowerMeterId" : row_index + 1,
"Service": "Electricity",
"Building": "JTC FoodHub",
"Floor": str(Floor),
"Location": Location,
"ReportType": "Electricity",
"System": System,
"SubSystem": "",
"Incomer": "",
"Category": "",
"DisplayName": DisplayName,
"Description": Description,
"Tag": tag,
"IsActive": 1,
"DataProviderType": int(0),
"DataTable": ""
}
mydict1.pop("_id", None)
f.write(str(mydict1) + '\n')
f.close()
6 Stimmen
Sie wissen schon, dass Pythons
print
funktioniert wieSystem.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