Ich habe eine Textdatei, die einige Überschriftenzeilen und einige Spalten (Zahlen) hat. Ich möchte diese Datei lesen, indem ich den Header überspringe, und dann einige Spalten und auswählen schreibe sie mit einem Python-Skript in eine neue Datei.
Zum Beispiel können wir die Daten unten aufrufen in_table.txt
. Ich möchte den Header überspringen (auch die Leerzeilen), Wählen Sie dann die erste und vierte Spalte (nur die numerischen Werte) und speichern Sie sie in einer neuen Datei out_table.txt
ohne Header, nur Zahlen. Wie kann ich das mit einem Python-Skript tun?
Danke vielmals!!
in_tabelle.txt:
hline1 hline1 hline1
hline2 hline2 hline2
hline3 hline3 hline3
par1 par2 par3 par4 par5
1. 10. 100. 1000. 10000.
2. 20. 200. 2000. 20000.
3. 30. 300. 3000. 30000.
4. 40. 400. 4000. 40000.
5. 50. 500. 5000. 50000.
.
Antworten:
2 für die Antwort № 1Wenn Sie mit Leerzeichenbegrenzern festhalten, verwenden Sie
with open("in_table.txt") as f:
# Iterate through the file until the table starts
for line in f:
if line.startswith("------"):
break
# Read the rest of the data, using spaces to split.
data = [r.split() for r in f]
with open("out_file.csv", "w") as of:
for r in data:
# Write only column 0 and 2 (re: 0-indexing)
of.write("%s, %sn"%(r[0], r[2]))
CSV
Wenn Sie mit Kommas abgrenzen, könnten Sie wahrscheinlich Pythons eingebaut haben csv
Bibliothek
import csv
with open("in_table.txt") as f:
for line in f:
if line.startswith("------"):
break
data = [r for r in csv.reader(f)]
with open("out_file.csv", "w") as of:
for r in data:
of.write("%s, %sn"%(r[0], r[2]))
oder vielleicht prägnanter
import csv
with open("in_table.txt") as f:
for line in f:
if line.startswith("------"):
break
data = [r[0]+r[2] for r in csv.reader(f)]
wrt = csv.writer(open("out_file.csv", "w"))
wrt.writerows(data)