こんな感じでしょうか。
Python
1import xlrd
2from pprint import pprint
3
4def try_to_int(arg):
5 try:
6 return int(arg)
7 except:
8 return arg
9
10def main():
11 book3 = xlrd.open_workbook('./data/excel.xlsx')
12 sheet3 = book3.sheet_by_index(0)
13
14 data_dict = {}
15 tag_list = sheet3.row_values(0)[1:]
16 for row_index in range(1, sheet3.nrows):
17 row = sheet3.row_values(row_index)[1:]
18 row = list(map(try_to_int, row))
19 data_dict[row_index] = dict(zip(tag_list, row))
20
21 pprint(data_dict)
22
23if __name__ == '__main__':
24 main()
25
26"""出力
27{1: {'age': 40,
28 'empleyee': 'leader',
29 'man': '',
30 'name': 'Blear',
31 'name_id': 1,
32 'user_id': 1},
33 2: {'age': 23,
34 'empleyee': 'others',
35 'man': '●',
36 'name': 'Tom',
37 'name_id': 5,
38 'user_id': 2},
39 3: {'age': 52,
40 'empleyee': 'manager',
41 'man': '',
42 'name': 'Rose',
43 'name_id': 9,
44 'user_id': 3},
45 4: {'age': '',
46 'empleyee': '',
47 'man': '',
48 'name': 'Karen',
49 'name_id': 10,
50 'user_id': 4}}
51"""
large_item
は仕様が分からなかったのでスルーしてます。
xlrdは初めて使ったので、慣習などは知りません。ご容赦ください。
いい練習になると思って、ジェネレータを使ってみた。
Python
1import xlrd
2from pprint import pprint
3
4def try_to_int(arg):
5 try:
6 return int(arg)
7 except:
8 return arg
9
10def read_all_row(worksheet, left_up=(0, 0)):
11 for i in range(left_up[0], worksheet.nrows):
12 ret_list = worksheet.row_values(i)[left_up[1]:]
13 yield list(map(try_to_int, ret_list))
14
15def main():
16 book3 = xlrd.open_workbook('./data/excel.xlsx')
17 sheet3 = book3.sheet_by_index(0)
18
19 data_dict = {}
20 tag_list = sheet3.row_values(0)[1:]
21 for i, row in enumerate(read_all_row(sheet3, left_up=(1, 1))):
22 data_dict[i] = dict(zip(tag_list, row))
23
24 pprint(data_dict)
25
26if __name__ == '__main__':
27 main()
なんかすっきりしない。ラッパークラスを作った方がいいのかもしれない。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。