मैं एक सीएसवी फ़ाइल के माध्यम से पार्स करने और केवल विशिष्ट कॉलम से डेटा निकालने की कोशिश कर रहा हूं।
उदाहरण csv:
ID | Name | Address | City | State | Zip | Phone | OPEID | IPEDS |
10 | C... | 130 W.. | Mo.. | AL... | 3.. | 334.. | 01023 | 10063 |
मैं, केवल विशिष्ट स्तंभ पर कब्जा करने की कोशिश कर रहा हूँ कहते हैं ID
, Name
, Zip
और Phone
।
मेरे द्वारा देखे गए कोड ने मुझे विश्वास दिलाया है कि मैं विशिष्ट कॉलम को उसके संबंधित नंबर से कॉल कर सकता हूं, इसलिए:: प्रत्येक पंक्ति के माध्यम से Name
मेल 2
खाएगा और इसका उपयोग करके row[2]
सभी कॉलम में सभी वस्तुओं का उत्पादन करेगा। केवल यही नहीं।
यहाँ मैंने अभी तक क्या किया है:
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
और मैं उम्मीद कर रहा हूं कि यह केवल प्रत्येक पंक्ति के लिए विशिष्ट कॉलमों को प्रिंट करेगा, जो इसके अलावा नहीं है, मुझे केवल अंतिम कॉलम मिलेगा।
"rb"
में पास होने के लिए उपयुक्त है csv.reader
।
'rb'
झंडा क्योंopen()
? क्या यह सरल नहीं होना चाहिएr
?