Wie kann ich Sie entfernen carriage return aus einer text-Datei mit Python?
Die Dinge, die ich gegoogelt habe nicht funktioniert, also hab ich den Dreh Experten!
Habe ich einige text in einem tab-getrennte text-Datei, die irgendeine Art von carriage return (auch wenn ich es öffnen in Notepad++ und verwenden Sie "alle Zeichen", ich sehe [CR][LF] am Ende der Zeile). Ich brauche, um diese zu entfernen carriage return (oder was auch immer es ist), aber ich kann nicht scheinen, um es herauszufinden. Hier ist ein Ausschnitt aus der text-Datei mit einer Zeile, die mit carriage return:
firstcolumn secondcolumn third fourth fifth sixth seventh
moreoftheseventh 8th 9th 10th 11th 12th 13th
Hier ist der code, den ich versuche zu verwenden, um es zu ersetzen, aber es ist nicht der Suche nach die Rückkehr:
with open(infile, "r") as f:
for line in f:
if "\n" in line:
line = line.replace("\n", " ")
Mein Skript einfach nicht finden, den Wagenrücklauf. Mache ich etwas falsch oder machen eine falsche Annahme über das carriage return? Könnte ich einfach entfernen es manuell in einem text-editor, aber es gibt über 5000 Datensätze in der text-Datei enthält, möglicherweise auch dieses Problem.
Weitere Informationen:
Das Ziel ist hier, wählen Sie zwei Spalten der text-Datei so, dass ich split auf \t-Zeichen und beziehen sich auf die Werte, die als Teile eines Arrays. Es funktioniert auf jeder Linie, ohne die Erträge, aber nicht auf den Linien, die mit den Renditen, zum Beispiel weil es kein element 9 in diesen Zeilen.
vals = line.split("\t")
print(vals[0] + " " + vals[9])
So, in der Textzeile oben, dieser code schlägt fehl, da es keinen index 9 im jeweiligen array. Für Zeilen von text, die nicht mit [CR][LF], funktioniert es wie erwartet.
Schreiben Sie die Zeilen wieder in die Datei?
Suche für die \r\n gescheitert.
Nein, brauche ich nicht zu schreiben der Zeilen zurück. Ich muss nur ändern Sie den Wert im Skript, in dem ich Sie nutzen.
warum müssen Sie entfernen Sie die EOL-Zeichen(s)? Sind Sie versuchen, die Datei zu konvertieren zu unix die EOL-style, oder sind Sie nur versuchen zu verbinden, die Daten zusammen? Wenn das ehemalige, sollten Sie nur öffnen mit
f = open(filename,"w", newline="\n")
und dann schreiben Sie es sofort zurück.InformationsquelleAutor mrcoulson | 2013-07-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Technisch gibt es eine Antwort!
B in
open(filetoread, "rb")
anscheinend öffnet die Datei so, dass ich auf diese Zeilenumbrüche und entfernen Sie Sie. Diese Antwort kam übrigens von Stack Overflow user Kenneth Reitz von der Website.Vielen Dank an alle!
InformationsquelleAutor mrcoulson
Je nach Art der Datei (und der OS es kommt, etc), Ihre Wagenrücklauf könnte
'\r'
,'\n'
oder'\r'\n'
. Der beste Weg, um loszuwerden von Ihnen, unabhängig davon, welche Sie sind, ist die Verwendung- Zeile.rstrip()
.Wenn Sie wollen, um loszuwerden, der NUR carriage returns und keine zusätzlichen Leerzeichen, die möglicherweise am Ende, die Sie liefern können das optionale argument
rstrip
:Hoffe, das hilft
InformationsquelleAutor inspectorG4dget
Python-Dateien öffnet, die in so genannten
Universelle newline-Modus
, also Zeilenumbrüche sind immer\n
.Durchlaufen Datei line-by-line. Und Sie ersetzen
\n
in den Zeilen. Aber in Wirklichkeit gibt es keine\n
da Linien sind bereits getrennt von\n
von iterator und jede Zeile enthält keine\n
.Können Sie nur Lesen aus Datei
f.read()
. Und dann ersetzen Sie\n
.Nein. Alle Zeilenumbrüche werden ersetzt mit
' '
.Es ist nicht klar, wie Sie möchten, halten Sie Linien und entfernen [CR][LF].
Es gibt Datensätze in der text-Datei, die zu schnell endet. Diese sind, was ich brauche, um zu beheben. Werde ich über es der falsche Weg ist?
InformationsquelleAutor ovgolovin
Werde ich, um diese zu schließen. Jemand lassen Sie mich wissen, wenn dies nicht der richtige Weg, um in der Nähe eine Frage. Ich merke, dass ich bin, ausgehend von der völlig falschen Winkel. Auch wenn ich entfernen konnte, Wagenrücklauf, ich würde am Ende mit einer langen Zeile statt 5000 Zeilen.
Danke an alle die Antworten. Ich lernte ein paar Dinge sowieso. Sorry, habe verschwendet jemand seine Zeit!
InformationsquelleAutor mrcoulson
Habe ich einen code, um es zu tun und es funktioniert:
InformationsquelleAutor Raphael
Hier, wie zu entfernen Wagenrücklauf ohne die Verwendung einer temporären Datei:
InformationsquelleAutor Michael Hays