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

5voto

dolaameng Punkte 1387

Die meisten Escape-Zeichen in String-Literalen aus Java sind auch in Python gültig, wie z.B. " \r " und " \n ".

5voto

Surya Punkte 9736

\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.....

4voto

tripleee Punkte 155951

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'

4voto

Lynne Punkte 361

Verwendung:

"{}\n{}\n{}".format(
    "line1",
    "line2",
    "line3"
)

Ich persönlich bevorzuge dieses Format.

2voto

\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()

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