Ich versuche, aus mehreren Eingabedateien zu lesen und die zweite Zeile aus jeder Datei nebeneinander als Tabelle auszugeben
%Vor% Aber ich bekomme eine "AttributeError: FileInput-Instanz hat kein Attribut ' __exit__
'"
Das Problem ist, dass ab Python 2.7.10 das Fileinput-Modul nicht mehr als Context-Manager verwendet werden kann, d. h. die with
-Anweisung. Sie müssen also selbst die Sequenz schließen. Folgendes sollte funktionieren:
Beachten Sie, dass Sie dieses Modul in neueren Versionen von Python 3 als Kontextmanager verwenden können.
Für den zweiten Teil der Frage, unter der Annahme, dass jede Datei ähnlich formatiert ist mit einer gleichen Anzahl von Datenzeilen der Form xxxxxx & xxxxx
, kann man eine Tabelle der Daten aus der zweiten Spalte jeder Daten wie folgt erstellen:
Beginnen Sie mit einer leeren Liste, um eine Tabelle zu sein, in der die Zeilen Listen von zweiten Spalteneinträgen von jeder Datei sein werden:
%Vor% Jetzt iteriere über alle Zeilen in der fileinput
-Sequenz, benutze fileinput.isfirstline()
, um zu prüfen, ob wir uns in einer neuen Datei befinden und mach eine neue Zeile:
Jetzt wird table
die Transponierte dessen, was Sie wirklich wollen, nämlich jede Zeile, die die zweiten Spalteneinträge einer gegebenen Zeile jeder Datei enthält. Um die Liste zu transponieren, kann man zip
verwenden und dann die transponierte Tabelle über die Zeilen mit der join
string-Methode durchlaufen, um jede Zeile mit einem Kommatrennzeichen (oder dem gewünschten Trennzeichen) zu drucken:
Tags und Links python