回答編集履歴

2

追記

2017/09/07 08:44

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -111,3 +111,71 @@
111
111
  `large_item`は仕様が分からなかったのでスルーしてます。
112
112
 
113
113
  xlrdは初めて使ったので、慣習などは知りません。ご容赦ください。
114
+
115
+
116
+
117
+ ---
118
+
119
+ いい練習になると思って、ジェネレータを使ってみた。
120
+
121
+ ```Python
122
+
123
+ import xlrd
124
+
125
+ from pprint import pprint
126
+
127
+
128
+
129
+ def try_to_int(arg):
130
+
131
+ try:
132
+
133
+ return int(arg)
134
+
135
+ except:
136
+
137
+ return arg
138
+
139
+
140
+
141
+ def read_all_row(worksheet, left_up=(0, 0)):
142
+
143
+ for i in range(left_up[0], worksheet.nrows):
144
+
145
+ ret_list = worksheet.row_values(i)[left_up[1]:]
146
+
147
+ yield list(map(try_to_int, ret_list))
148
+
149
+
150
+
151
+ def main():
152
+
153
+ book3 = xlrd.open_workbook('./data/excel.xlsx')
154
+
155
+ sheet3 = book3.sheet_by_index(0)
156
+
157
+
158
+
159
+ data_dict = {}
160
+
161
+ tag_list = sheet3.row_values(0)[1:]
162
+
163
+ for i, row in enumerate(read_all_row(sheet3, left_up=(1, 1))):
164
+
165
+ data_dict[i] = dict(zip(tag_list, row))
166
+
167
+
168
+
169
+ pprint(data_dict)
170
+
171
+
172
+
173
+ if __name__ == '__main__':
174
+
175
+ main()
176
+
177
+ ```
178
+
179
+
180
+
181
+ なんかすっきりしない。ラッパークラスを作った方がいいのかもしれない。

1

追記

2017/09/07 08:43

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -8,31 +8,53 @@
8
8
 
9
9
 
10
10
 
11
- book3 = xlrd.open_workbook('./data/excel.xlsx')
11
+ def try_to_int(arg):
12
12
 
13
+ try:
14
+
13
- sheet3 = book3.sheet_by_index(0)
15
+ return int(arg)
16
+
17
+ except:
18
+
19
+ return arg
14
20
 
15
21
 
16
22
 
17
- data_dict = {}
23
+ def main():
18
24
 
19
- tag_list = sheet3.row_values(0)[1:]
25
+ book3 = xlrd.open_workbook('./data/excel.xlsx')
20
26
 
21
- for row_index in range(1, sheet3.nrows):
22
-
23
- row = sheet3.row_values(row_index)[1:]
27
+ sheet3 = book3.sheet_by_index(0)
24
-
25
- data_dict[row_index] = dict(zip(tag_list, row))
26
28
 
27
29
 
28
30
 
31
+ data_dict = {}
32
+
33
+ tag_list = sheet3.row_values(0)[1:]
34
+
35
+ for row_index in range(1, sheet3.nrows):
36
+
37
+ row = sheet3.row_values(row_index)[1:]
38
+
39
+ row = list(map(try_to_int, row))
40
+
41
+ data_dict[row_index] = dict(zip(tag_list, row))
42
+
43
+
44
+
29
- pprint(data_dict)
45
+ pprint(data_dict)
46
+
47
+
48
+
49
+ if __name__ == '__main__':
50
+
51
+ main()
30
52
 
31
53
 
32
54
 
33
55
  """出力
34
56
 
35
- {1: {'age': 40.0,
57
+ {1: {'age': 40,
36
58
 
37
59
  'empleyee': 'leader',
38
60
 
@@ -40,11 +62,11 @@
40
62
 
41
63
  'name': 'Blear',
42
64
 
43
- 'name_id': 1.0,
65
+ 'name_id': 1,
44
66
 
45
- 'user_id': 1.0},
67
+ 'user_id': 1},
46
68
 
47
- 2: {'age': 23.0,
69
+ 2: {'age': 23,
48
70
 
49
71
  'empleyee': 'others',
50
72
 
@@ -52,11 +74,11 @@
52
74
 
53
75
  'name': 'Tom',
54
76
 
55
- 'name_id': 5.0,
77
+ 'name_id': 5,
56
78
 
57
- 'user_id': 2.0},
79
+ 'user_id': 2},
58
80
 
59
- 3: {'age': 52.0,
81
+ 3: {'age': 52,
60
82
 
61
83
  'empleyee': 'manager',
62
84
 
@@ -64,9 +86,9 @@
64
86
 
65
87
  'name': 'Rose',
66
88
 
67
- 'name_id': 9.0,
89
+ 'name_id': 9,
68
90
 
69
- 'user_id': 3.0},
91
+ 'user_id': 3},
70
92
 
71
93
  4: {'age': '',
72
94
 
@@ -76,9 +98,9 @@
76
98
 
77
99
  'name': 'Karen',
78
100
 
79
- 'name_id': 10.0,
101
+ 'name_id': 10,
80
102
 
81
- 'user_id': 4.0}}
103
+ 'user_id': 4}}
82
104
 
83
105
  """
84
106