Ich versuche, eine Anführungszeichen-Datei eines bestimmten Benutzernamens in einer Protokolldatei zu erstellen. Wie entferne ich jede Zeile, die den bestimmten Benutzernamen nicht enthält? Oder wie schreibe ich alle Zeilen, die diesen Benutzernamen enthalten, in eine neue Datei?Entfernen Sie Zeilen aus einer Textdatei, die keine bestimmte Zeichenfolge mit Python enthalten
Antwort
Etwas entlang dieser Linie sollte genügen:
newfile = open(newfilename, 'w')
for line in file(filename, 'r'):
if name in line:
newfile.write(line)
newfile.close()
See: http://docs.python.org/tutorial/inputoutput.html#methods-of-file-objects
f.readlines() gibt eine Liste alle Linien der Daten in der Datei enthalten.
Ein alternativer Ansatz zum Lesen von Zeilen besteht darin, das Dateiobjekt zu durchlaufen. Dies ist Speicher effizient, schnell und führt zu einfacherem Code
>>> for line in f:
print line
Sie können auch die Verwendung von with
Stichwort Kasse. Der Vorteil, dass die Datei ordnungsgemäß nach seiner Suite geschlossen ist beendet
>>> with open(filename, 'r') as f:
... read_data = f.read()
>>> f.closed
True
with open('input.txt', 'r') as rfp:
with open('output.txt', 'w') as wfp:
for line in rfp:
if ilikethis(line):
wfp.write(line)
with open(logfile) as f_in:
lines = [l for l in f_in if username in l]
with open(outfile, 'w') as f_out:
f_out.writelines(lines)
Oder wenn Sie nicht wollen, in
Speicher alle Linien speichernwith open(logfile) as f_in:
lines = (l for l in f_in if username in l)
with open(outfile, 'w') as f_out:
f_out.writelines(lines)
ich ein bisschen wie der erste besser, aber für eine große Datei könnte es ziehen.
Sie brauchen nicht die zweite einrücken ‚mit‘ im zweiten Fall Aus dem gleichen Grund, den Sie im ersten Fall nicht benötigen. –
@Karl Knechtel tue ich eigentlich. Da ich im zweiten Fall einen Generator-Ausdruck verwende, wird die Datei geschlossen und es wird ein Fehler auftreten, wenn der Generator-Ausdruck tatsächlich verarbeitet wird, wenn die Anweisung 'with' beendet wird. Versuch es. Es ist der einzige Fehler, den ich mir vorstellen kann, wenn ich Generatorausdrücke mit der Dateiverarbeitung verwende. – aaronasterling
Ah, ich verstehe. Die Existenz des Generators hält die Datei nicht offen. Dumm ich :) –
Ich weiß, dass Sie nach Python gefragt haben, aber wenn Sie auf Unix sind, ist dies ein Job für Grep.
grep name file
Wenn Sie nicht auf Unix sind, gut ... die Antwort oben funktioniert der Trick :)
http://gnuwin32.sourceforge.net/packages/grep.htm –
noch besser! :) – John
- 1. Entfernen Sie Zeilen, die bestimmte Zeichenfolge enthalten
- 2. Entfernen Sie bestimmte Zeilen in der Zeichenfolge?
- 3. Entfernen Sie Zeichenfolge in einer Textdatei aus einer anderen Textdatei
- 4. Suchen Sie alle Elemente, die keine bestimmte Zeichenfolge enthalten
- 5. Entfernen Sie alle Zeilen mit bestimmten Werten aus einer Zeichenfolge.
- 6. Entfernen Sie ganze Wörter, die eine Zeichenfolge in Vim enthalten
- 7. Entfernen Sie Zeilen mit einem Schlüsselwort aus einer Datei
- 8. Entfernen Sie Zeilen mit japanischen Zeichen aus einer Datei
- 9. entfernen gesamte Listenelemente, die eine bestimmte Zeichenfolge enthalten
- 10. JavaScript: Entfernen von Zeile, die bestimmte Zeichenfolge enthalten
- 11. Python entfernen Zeilen, die mehr als eine Tilde enthalten
- 12. Entfernen Sie teilweise Duplikate aus der Textdatei
- 13. Extrahieren einer Zeichenfolge aus einer Textdatei in Python 2.7.5
- 14. Zeilen aus einem Array entfernen, die bestimmte Kriterien erfüllen. MATLAB
- 15. Entfernen einer zufälligen Zeile aus einer Textdatei - Python
- 16. r - Filter Zeilen, die eine Zeichenfolge aus einem Vektor enthalten
- 17. So entfernen Sie unerwünschte Zeichen aus einer Zeichenfolge?
- 18. Suche bestimmte Zeichenfolge in einer Textdatei mit VBS-Skript
- 19. Extrahieren von Daten aus Zeilen einer Textdatei
- 20. Entfernen Sie Zeilen, die Zeichenfolge in einem beliebigen Vektor in Datenrahmen enthalten
- 21. So entfernen Sie einen Verzeichnispfad aus einer Textdatei
- 22. Entfernen Sie doppelte Zeilen aus einer großen Datei in Python
- 23. Entfernen Sie bestimmte Rechtecke aus einer ArrayList
- 24. Entfernen Sie bestimmte Objekte aus einer Liste
- 25. hinzufügen Spacer Zeilen in einer Liste der Textdatei mit Python
- 26. Lesen Sie Zeilen aus einer Textdatei, aber überspringen Sie die ersten beiden Zeilen
- 27. Entfernen von Sonderzeichen aus Zeichenfolge in Python
- 28. Wie liest man Zeilen in einer Textdatei nur nach einer bestimmten Zeichenfolge mit Python?
- 29. Entfernen Wagenrücklauf aus Textdatei
- 30. Entfernen Sie Zeilen in Textdatei, die weniger als 4 Rohre enthalten
Dies ist ideal – pyfunc