/ / Python: odczyt i zapis pliku tekstowego z kolumnami nagłówkowymi i liczbowymi [closed] - python, file, csv

Python: odczyt i zapis pliku tekstowego z kolumnami nagłówkowymi i liczbowymi [closed] - python, file, csv

Mam plik tekstowy, który ma kilka linii nagłówkowych i kilka kolumn (liczb). Chcę przeczytać ten plik, pomijając nagłówek, a następnie wybierz kilka kolumn i zapisz je w nowym pliku za pomocą skryptu Python.

Na przykład, zadzwoń do poniższych danych in_table.txt. Chcę pominąć nagłówek (także puste linie), następnie wybierz pierwszą i czwartą kolumnę (tylko wartości liczbowe) i zapisz je w nowym pliku out_table.txt bez nagłówków, tylko liczby. Jak mogę to zrobić za pomocą skryptu Python?

Wielkie dzięki!!

in_table.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.

.

Odpowiedzi:

2 dla odpowiedzi № 1

Jeśli używasz ograniczników przestrzeni, użyj

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

Jeśli oddzielasz je przecinkami, prawdopodobnie masz wbudowane pytony csv biblioteka

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]))

lub może bardziej zwięźle

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)