Tôi đang cố phân tích cú pháp thông qua tệp csv và trích xuất dữ liệu từ các cột cụ thể.
Ví dụ csv:
ID | Name | Address | City | State | Zip | Phone | OPEID | IPEDS |
10 | C... | 130 W.. | Mo.. | AL... | 3.. | 334.. | 01023 | 10063 |
Tôi đang cố gắng để nắm bắt các cột chỉ cụ thể, nói ID
, Name
, Zip
và Phone
.
Mã tôi đã xem đã khiến tôi tin rằng tôi có thể gọi cột cụ thể theo số tương ứng của nó, do đó: Name
sẽ tương ứng 2
và lặp qua từng hàng bằng cách sử dụng row[2]
sẽ tạo ra tất cả các mục trong cột 2. Chỉ có nó không có.
Đây là những gì tôi đã làm cho đến nay:
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
và tôi hy vọng rằng điều này sẽ chỉ in ra các cột cụ thể mà tôi muốn cho mỗi hàng trừ khi không có, tôi chỉ nhận được cột cuối cùng.
"rb"
phù hợp để chuyển đến csv.reader
.
'rb'
cờ đếnopen()
? nó không nên đơn giảnr
?