1375 Stimmen

Wie liest man eine Textdatei in eine Zeichenfolgenvariable ein und entfernt Zeilenumbrüche?

Ich habe eine Textdatei, die so aussieht:

ABC
DEF

Wie kann ich die Datei in einen einzelnen Zeichenfolge ohne Zeilenumbrüche einlesen, in diesem Fall eine Zeichenfolge 'ABCDEF' erstellen?


Um die Datei in eine <em>Liste</em> von Zeilen einzulesen, aber das Zeilenendezeichen von jedem Zeile zu entfernen, sehen Sie <a href="https://stackoverflow.com/questions/12330522/how-to-read-a-file-without-newlines">Wie man eine Datei ohne Zeilenumbrüche liest?</a>.

4voto

Edward D'Souza Punkte 2145

Dies ist eine einzeilige, kopierbare Lösung, die auch das Dateiobjekt schließt:

_ = open('data.txt', 'r'); data = _.read(); _.close()

4voto

Machinexa Punkte 402

Einzelnachricht:

  • Liste: "".join([line.rstrip('\n') for line in open('file.txt')])

  • Generator: "".join((line.rstrip('\n') for line in open('file.txt')))

Liste ist schneller als Generator, aber verbraucht mehr Speicher. Generatoren sind langsamer als Listen und beanspruchen weniger Speicher beim Durchlaufen von Zeilen. Im Falle von "".join() denke ich, dass beide gut funktionieren sollten. .join() Funktion sollte entfernt werden, um jeweils Liste oder Generator zu erhalten.

  • Hinweis: close() / Schließen des Dateideskriptors wahrscheinlich nicht erforderlich

4voto

yota Punkte 1680
line_lst = Path("to/the/file.txt").read_text().splitlines()

Ist der beste Weg, um alle Zeilen einer Datei zu erhalten, die '\n' sind bereits durch splitlines() entfernt (der intelligent Weiß Kleinenfenster/Mac/Unix Zeilentypen).

Aber wenn Sie dennoch jede Zeile entfernen möchten:

line_lst = [line.strip() for line in txt = Path("to/the/file.txt").read_text().splitlines()]

strip() war nur ein nützliches Beispiel, aber Sie können Ihre Zeile nach Belieben verarbeiten.

Am Ende wollen Sie einfach zusammengesetzten Text ?

txt = ''.join(Path("to/the/file.txt").read_text().splitlines())

3voto

Sma Ma Punkte 2567

Um Zeilenumbrüche in Python zu entfernen, können Sie die replace-Funktion eines Strings verwenden.

In diesem Beispiel werden alle 3 Arten von Zeilenumbrüchen entfernt:

my_string = open('lala.json').read()
print(my_string)

my_string = my_string.replace("\r","").replace("\n","")
print(my_string)

Beispielhaft ist die Datei:

{
  "lala": "lulu",
  "foo": "bar"
}

Sie können es mit diesem Wiedergabeszenario ausprobieren:

https://repl.it/repls/AnnualJointHardware

Bildbeschreibung eingeben

2voto

John Galbraith Punkte 387

Ich habe das Gefühl, dass niemand den [ ] Teil deiner Frage angesprochen hat. Wenn du jede Zeile in deine Variable einliest, weil es mehrere Zeilen gab, bevor du das \n mit '' ersetzt hast, hast du eine Liste erstellt. Wenn du also eine Variable x hast und sie einfach so ausgibst:

x

oder print(x)

oder str(x)

Dann siehst du die gesamte Liste mit den Klammern. Wenn du jedes Element des (Arrays) aufrufst

x[0] dann werden die Klammern weggelassen. Wenn du die str() Funktion verwendest, siehst du nur die Daten und nicht die ''.

str(x[0])

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