回答編集履歴

2

誤字の修正

2018/11/22 06:27

投稿

ko.tu
ko.tu

スコア178

test CHANGED
@@ -52,6 +52,12 @@
52
52
 
53
53
  ここのコードを読み飛ばしておりここがエラーになっていました
54
54
 
55
+ processed_tableに入ってるのは数字のリストなのに
56
+
57
+ 数字に添え字で['element']ってやってもアクセスできないよねってことでした
58
+
59
+
60
+
55
61
  pythonではリストを宣言する際にサイズを気にする必要はありません
56
62
 
57
63
  初期化してそこに要素をappendすれば勝手に要素数を増やしていってくれます
@@ -90,7 +96,7 @@
90
96
 
91
97
  for i in range(0, 8*row_number, 8):
92
98
 
93
- dir_dict['element'].append(value.find_all('td')[2+i].text)
99
+ dir_dict['element'].append(value.find_all('td')[1+i].text)
94
100
 
95
101
  dir_dict['value'].append(value.find_all('td')[2+i].text)
96
102
 
@@ -104,24 +110,36 @@
104
110
 
105
111
  processed_tableにはdir_dictのリストが入っていて
106
112
 
107
- processed_table[数]でアクセスできる
113
+ processed_table[all_tableの数]でアクセスできる
108
114
 
109
115
 
110
116
 
111
- processed_table[数]にはdir_dictが入っていて
117
+ processed_table[all_tebleの数]にはdir_dictが入っていて
112
118
 
113
- processed_table[数]['element']などでアクセスできる
119
+ processed_table[all_tableの数]['element']などでアクセスできる
114
120
 
115
121
 
116
122
 
117
- processed_table[数]['element']にはリストが入っていて
123
+ processed_table[all_tableの数]['element']にはリストが入っていて
118
124
 
119
- processed_table[数]['element'][数字]でアクセスできる
125
+ processed_table[all_tableの数]['element'][row_number]でアクセスできる
120
126
 
121
127
 
122
128
 
123
- processed_table[数]['element'][数字]にはvalue.find_all('td')[2+i].textなどが入っていて
129
+ processed_table[all_tableの数]['element'][row_number]には
124
130
 
125
- そこから先はbeautifulsoupの範囲であたり
131
+ value.find_all('td')[2+i].textなどが入ていて
126
132
 
133
+ そこから先はbeautifulsoupにお任せします
134
+
135
+
136
+
137
+ ただdictの中にあんまりlistを入れたくないので、
138
+
139
+ 自分であれば
140
+
141
+ processed_table[all_tableの数]['element'][row_number]の並びよりも
142
+
143
+ processed_table[all_tableの数][row_number]['element']の並びにすると思います
144
+
127
- そもそもぜ8の倍数でリストを作りたいの分からないのでお任せします(**)
145
+ なかなか分からない事だらけだと思いますが頑張ってください(^o^)/

1

エラーへの対応

2018/11/22 06:27

投稿

ko.tu
ko.tu

スコア178

test CHANGED
@@ -37,3 +37,91 @@
37
37
  processed_tables[index]['remark'].append(value.find_all('td')[7+i].text)
38
38
 
39
39
  ```
40
+
41
+
42
+
43
+ ## 追記
44
+
45
+ ```python
46
+
47
+ #指定数の配列を用意して0で初期化
48
+
49
+ processed_tables = [ 0 for i in range(number) ]
50
+
51
+ ```
52
+
53
+ ここのコードを読み飛ばしておりここがエラーになっていました
54
+
55
+ pythonではリストを宣言する際にサイズを気にする必要はありません
56
+
57
+ 初期化してそこに要素をappendすれば勝手に要素数を増やしていってくれます
58
+
59
+ 多分これでエラーを回避できると思います(最初のやつよりだいぶ変わっちゃいました)
60
+
61
+
62
+
63
+ ```python
64
+
65
+ #取得するtable数
66
+
67
+ number = int(input())
68
+
69
+
70
+
71
+ #入力された数だけtableタグを取得する
72
+
73
+ all_tables = soup.find_all('table', limit = number)
74
+
75
+
76
+
77
+ # init List
78
+
79
+ processed_table = []
80
+
81
+
82
+
83
+ for value in all_tables:
84
+
85
+ row_number = len(value.tbody.find_all('tr'))
86
+
87
+
88
+
89
+ dir_dict = {'element':[], 'value':[], 'remark':[]}
90
+
91
+ for i in range(0, 8*row_number, 8):
92
+
93
+ dir_dict['element'].append(value.find_all('td')[2+i].text)
94
+
95
+ dir_dict['value'].append(value.find_all('td')[2+i].text)
96
+
97
+ dir_dict['remark'].append(value.find_all('td')[7+i].text)
98
+
99
+ processed_table.append(dir_dict)
100
+
101
+ ```
102
+
103
+ おそらくこれで実行できて、
104
+
105
+ processed_tableにはdir_dictのリストが入っていて
106
+
107
+ processed_table[数字]でアクセスできる
108
+
109
+
110
+
111
+ processed_table[数字]にはdir_dictが入っていて
112
+
113
+ processed_table[数字]['element']などでアクセスできる
114
+
115
+
116
+
117
+ processed_table[数字]['element']にはリストが入っていて
118
+
119
+ processed_table[数字]['element'][数字]でアクセスできる
120
+
121
+
122
+
123
+ processed_table[数字]['element'][数字]にはvalue.find_all('td')[2+i].textなどが入っていて
124
+
125
+ そこから先はbeautifulsoupの範囲であったり
126
+
127
+ そもそもなぜ8の倍数でリストを作りたいのかが分からないのでお任せします(**)