Próbuję przeanalizować plik csv i wyodrębnić dane tylko z określonych kolumn.
Przykład csv:
< kod>ID | Nazwa | Adres | Miasto | Stan | Kod pocztowy | Telefon | OPEID | IPEDS | 10 | C... | 130 W.. | Pn.. | AL... | 3.. | 334.. | 01023 | 10063 |
Próbuję przechwycić tylko określone kolumny, powiedzmy ID
, Nazwa
, Zip
i Telefon
.
Kod, na który przejrzałem, skłonił mnie do przekonania, że mogę nazwać konkretną kolumnę jej odpowiednim numerem, np.: Nazwa
odpowiadałoby 2
, a iteracja przez każdy wiersz przy użyciu row[2]
dałaby wszystkie elementy w kolumnie 2. Tylko to nie odpowiada.
Oto co do tej pory zrobiłem:
import sys, argparse, csv z ustawień import * # argumenty poleceń parser = argparse.ArgumentParser(description="csv to postgres", fromfile_prefix_chars ="@" ) parser.add_argument("plik", help="plik csv do zaimportowania", akcja ="store") args = parser.parse_args() csv_file = args.file # otwórz plik csv z open(csv_file, "rb") jako csvfile: # pobierz liczbę kolumn dla linii w csvfile.readlines(): array = line .split(",") first_item = array[0] num_columns = len(array) csvfile.seek(0) reader = csv.reader(csvfile, delimiter=" ") included_cols = [1, 2, 6, 7] for wiersz w czytniku: content = list(row[i] for i in included_cols) print content
i spodziewam się, że to spowoduje wydrukowanie tylko określonych kolumn, które chcę dla każdego wiersza, z wyjątkiem nie, otrzymuję tylko ostatnią kolumnę.