Čo je najčistejší spôsob čítania v multi-stĺpci súboru tsv v pytone so záhlavím, ale kde prvý stĺpec nemá hlavičku a namiesto toho obsahuje čísla riadkov pre každý riadok?
Toto je zrejme spoločný formát zo súborov pochádzajúcich z dátových rámcov R.
Príklad:
A B C
1 a1 b1 c1
2 a2 b2 c2
3 a3 b3 c3
Nejaké nápady?
odpovede:
10 pre odpoveď č. 1Záleží na tom, čo chcete robiť s dátami neskôr (a ak je súbor skutočne tsv s oddeľovačom t). Ak to len chcete v súbore zoznamov, môžete použiť csv
modul takto:
import csv
with open("tsv.tsv") as tsvfile:
tsvreader = csv.reader(tsvfile, delimiter="t")
for line in tsvreader:
print line[1:]
Odporúčam však tiež DataFrame
modul od pandas
pre čokoľvek mimo jednoduchých operácií pythonu. Môže sa použiť ako taká:
from pandas import DataFrame
df = DataFrame.from_csv("tsv.tsv", sep="t")
DataFrames umožňujú manipuláciu s dátovými súbormi na vysokej úrovni, ako je pridanie stĺpcov, nájdenie priemerov atď.
0 pre odpoveď č. 2
Čo je to s nasledujúcimi natívnymi Python kódmi:
with open("tsvfilename") as f:
lines = f.read().split("n")[:-1]
for i, line in enumerate(lines):
if i == 0: # header
column_names = line.split()
# ...
else:
data = line.split();
# ...