2013-01-07 13 views
5

मैं मूल्यों से एक शब्दकोश का निर्माण करना चाहते से शब्दकोश बनाना, मैं एक्सेल कोशिकाओं, मेरे कोड के नीचे है से मिलता है,अजगर एक्सेल डेटा

wb = xlrd.open_workbook('foo.xls') 
sh = wb.sheet_by_index(2) 
for i in range(138): 
    cell_value_class = sh.cell(i,2).value 
    cell_value_id = sh.cell(i,0).value 

और मैं नीचे की तरह, एक शब्दकोश बनाना चाहते हैं, कि एक्सेल कोशिकाओं से आने वाले मूल्यों में शामिल हैं;

{'class1': 1, 'class2': 3, 'class3': 4, 'classN':N} 

इस बारे में कोई विचार है कि मैं इस शब्दकोश को कैसे बना सकता हूं?

उत्तर

9
d = {} 
wb = xlrd.open_workbook('foo.xls') 
sh = wb.sheet_by_index(2) 
for i in range(138): 
    cell_value_class = sh.cell(i,2).value 
    cell_value_id = sh.cell(i,0).value 
    d[cell_value_class] = cell_value_id 
+0

यह काफी है कि मैं क्या सोच रहा था है ... – mgilson

+0

है 'एक शब्दकोश वस्तु या किसी d' सरणी? –

+0

@PythonLikeYOU - 'd = {} 'के अनुसार, यह एक शब्दकोश है। अवधारणा के लिए – eumiro

19

या आप pandas

from pandas import * 
xls = ExcelFile('path_to_file.xls') 
df = xls.parse(xls.sheet_names[0]) 
print df.to_dict() 
+0

'+ 1' अवधारणा के लिए आपको! –

0

कोशिश कर सकते हैं मैं के लिए जाना चाहते हैं:

wb = xlrd.open_workbook('foo.xls') 
sh = wb.sheet_by_index(2) 
lookup = dict(zip(sh.col_values(2, 0, 138), sh.col_values(0, 0, 138))) 
0

अगर आप इसे csv को यह बहुत उपयुक्त है बदल सकते हैं।

import dataconverters.commas as commas 
filename = 'test.csv' 
with open(filename) as f: 
     records, metadata = commas.parse(f) 
     for row in records: 
      print 'this is row in dictionary:'+row 
5

यह स्क्रिप्ट आप शब्दकोशों की एक सूची के लिए एक एक्सेल डेटा तालिका को बदलने के लिए अनुमति देता है:

import xlrd 

workbook = xlrd.open_workbook('foo.xls') 
workbook = xlrd.open_workbook('foo.xls', on_demand = True) 
worksheet = workbook.sheet_by_index(0) 
first_row = [] # The row where we stock the name of the column 
for col in range(worksheet.ncols): 
    first_row.append(worksheet.cell_value(0,col)) 
# transform the workbook to a list of dictionaries 
data =[] 
for row in range(1, worksheet.nrows): 
    elm = {} 
    for col in range(worksheet.ncols): 
     elm[first_row[col]]=worksheet.cell_value(row,col) 
    data.append(elm) 
print data 
संबंधित मुद्दे