Ich verwende das folgende Codesegment, um eine Datei in Python zu lesen:
with open ("data.txt", "r") as myfile:
data=myfile.readlines()
Die Eingabedatei lautet:
LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN
GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE
und wenn ich Daten drucke, bekomme ich
['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN\n', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']
Wie ich sehe, sind Daten in list
Form. Wie mache ich es String? Und auch , wie entferne ich die "\n"
, "["
und "]"
Zeichen von ihm?
Antworten:
Du könntest benutzen:
quelle
open("data.txt").read().replace('\n','')
stattdessen nur schreibt ?rstrip('\n')
nur die neue Zeile aus der letzten Zeile,replace('\n','')
entfernt sie überall (im Wesentlichen macht die gesamte Datei eine Zeile)Verwenden Sie
read()
nichtreadline()
:quelle
encoding="utf-8"
Sie können aus einer Datei in einer Zeile lesen:
Bitte beachten Sie, dass dadurch die Datei nicht explizit geschlossen wird.
CPython schließt die Datei, wenn sie als Teil der Garbage Collection beendet wird.
Andere Python-Implementierungen werden dies jedoch nicht tun. Um tragbaren Code zu schreiben, ist es besser,
with
die Datei explizit zu verwenden oder zu schließen. Kurz ist nicht immer besser. Siehe https://stackoverflow.com/a/7396043/362951quelle
open
sollte innerhalb einerwith ... as
Anweisung verwendet werden.with ... as
Aussage etwas?with ... as
oderstr.close()
wie in Pedros Antwort gezeigt. Mehr über die Wichtigkeit des Schließens von Dateien hierstr()
von Builtins beschattet wurdenUm alle Zeilen zu einer Zeichenfolge zusammenzufügen und neue Zeilen zu entfernen, verwende ich normalerweise:
quelle
In Python 3.5 oder höher können Sie mit pathlib den Inhalt von Textdateien in eine Variable kopieren und die Datei in einer Zeile schließen:
und dann können Sie str.replace verwenden , um die Zeilenumbrüche zu entfernen:
quelle
join () verbindet eine Liste von Zeichenfolgen, und rstrip () ohne Argumente schneidet Leerzeichen, einschließlich Zeilenumbrüche, vom Ende der Zeichenfolgen ab.
quelle
Dies kann mit der read () -Methode erfolgen:
Oder da der Standardmodus selbst 'r' (Lesen) ist, verwenden Sie einfach,
quelle
Ich habe eine Weile damit herumgespielt und bevorzuge die Verwendung
read
in Kombination mitrstrip
. Ohnerstrip("\n")
fügt Python am Ende der Zeichenfolge eine neue Zeile hinzu, was in den meisten Fällen nicht sehr nützlich ist.quelle
Es ist schwer genau zu sagen, wonach Sie suchen, aber so etwas sollte Ihnen den Einstieg erleichtern:
quelle
data = ' '.join(line.replace('\n', '') for line in myfile)
oder die Version von MagerValp.Ich bin überrascht, dass noch niemand erwähnt
splitlines()
hat.Variable
data
ist jetzt eine Liste, die beim Drucken folgendermaßen aussieht:Beachten Sie, dass es keine Zeilenumbrüche gibt (
\n
).An diesem Punkt klingt es so, als ob Sie die Zeilen auf die Konsole zurückdrucken möchten, was Sie mit einer for-Schleife erreichen können:
quelle
Sie können auch jede Zeile entfernen und zu einer endgültigen Zeichenfolge verketten.
Dies würde auch gut funktionieren.
quelle
Sie können dies in eine in zwei Codezeilen komprimieren !!!
Wenn Ihre Datei lautet:
Python-Ausgabe
quelle
Dies ist eine einzeilige, kopierbare Lösung, die auch das Dateiobjekt schließt:
quelle
quelle
string += line
sollten vermieden werden. Einige Versionen von Python können hier möglicherweise das Verhalten von O (n ^ 2) vermeiden, aber alle anderen Antworten, die gegeben wurden, sind besser als diese. Außerdem haben Sie die angeforderten Zeilenumbrüche nicht entfernt, sodass Ihr Code nur sehr langsam ausgeführt werden kannstring = f.read()
python3: Google "list comphrension", wenn die Syntax in eckigen Klammern für Sie neu ist.
quelle
Hast du das versucht?
quelle
Ich habe nicht das Gefühl, dass jemand den [] Teil Ihrer Frage angesprochen hat. Wenn Sie jede Zeile in Ihre Variable einlesen, weil es mehrere Zeilen gab, bevor Sie das \ n durch '' ersetzt haben, haben Sie am Ende eine Liste erstellt. Wenn Sie eine Variable von x haben und diese einfach mit ausdrucken
x
oder drucke (x)
oder str (x)
Sie sehen die gesamte Liste mit den Klammern. Wenn Sie jedes Element von (Array von Sortierungen) aufrufen
x [0] dann werden die Klammern weggelassen. Wenn Sie die Funktion str () verwenden, sehen Sie nur die Daten und nicht das ''. str (x [0])
quelle
Vielleicht könnten Sie das versuchen? Ich benutze dies in meinen Programmen.
quelle
Regulärer Ausdruck funktioniert auch:
quelle
Um Zeilenumbrüche mit Python zu entfernen, können Sie die
replace
Funktion einer Zeichenfolge verwenden.In diesem Beispiel werden alle drei Arten von Zeilenumbrüchen entfernt:
Beispieldatei ist:
Sie können es mit diesem Wiederholungsszenario versuchen:
https://repl.it/repls/AnnualJointHardware
quelle
Dies funktioniert: Ändern Sie Ihre Datei in:
Dann:
Dadurch wird eine Liste mit dem folgenden Namen erstellt
words
:Das hat das "\ n" beseitigt. Gehen Sie folgendermaßen vor, um den Teil über die Klammern zu beantworten, die Ihnen im Weg stehen:
Oder:
Dies gibt zurück:
quelle
Dieser Code hilft Ihnen beim Lesen der ersten Zeile. Mit der Option Liste und Aufteilung können Sie das Wort in der ersten Zeile konvertieren, das durch das in einer Liste zu speichernde Leerzeichen getrennt ist.
Dann können Sie leicht auf jedes Wort zugreifen oder es sogar in einer Zeichenfolge speichern.
Dasselbe können Sie auch mit einer for-Schleife tun.
quelle
quelle
Versuche Folgendes:
Achtung: Das wird nicht entfernt
\n
. Es dient nur zum Anzeigen des Textes, als ob es keinen gäbe\n
quelle