Saya mencoba mengurai file csv dan mengekstrak data hanya dari kolom tertentu.
Contoh csv:
ID | Name | Address | City | State | Zip | Phone | OPEID | IPEDS |
10 | C... | 130 W.. | Mo.. | AL... | 3.. | 334.. | 01023 | 10063 |
Saya mencoba untuk menangkap kolom hanya spesifik, mengatakan ID
, Name
, Zip
dan Phone
.
Kode yang saya lihat telah membuat saya percaya bahwa saya dapat memanggil kolom tertentu dengan nomor yang sesuai, jadi yaitu: Name
akan berkorespondensi dengan 2
dan mengulangi setiap baris menggunakan row[2]
akan menghasilkan semua item dalam kolom 2. Hanya saja tidak.
Inilah yang telah saya lakukan sejauh ini:
import sys, argparse, csv
from settings import *
# command arguments
parser = argparse.ArgumentParser(description='csv to postgres',\
fromfile_prefix_chars="@" )
parser.add_argument('file', help='csv file to import', action='store')
args = parser.parse_args()
csv_file = args.file
# open csv file
with open(csv_file, 'rb') as csvfile:
# get number of columns
for line in 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 row in reader:
content = list(row[i] for i in included_cols)
print content
dan saya berharap ini hanya akan mencetak kolom spesifik yang saya inginkan untuk setiap baris kecuali itu tidak, saya mendapatkan kolom terakhir saja.
"rb"
sesuai untuk diteruskan ke csv.reader
.
'rb'
bendera untukopen()
? bukankah seharusnya sederhanar
?