質問編集履歴

2

エラーの追記

2020/12/28 05:29

投稿

AbcdefgFirst
AbcdefgFirst

スコア33

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- いつもお世話になっております。
1
+ ![イメージ説明](500eb194039075ffed7864e59193e4ef.png)いつもお世話になっております。
2
2
 
3
3
  下記のようなxmlから辞書に変換したいのですが、自分の知識では正確な書き方が分かりませんでした。
4
4
 
@@ -158,6 +158,6 @@
158
158
 
159
159
 
160
160
 
161
- お力えを頂けせんでょうか
161
+ エラー画面を付しまし
162
162
 
163
- 宜しくお願い致します。
163
+ このoptionの部分でInstance of dict has no attrib memberとなります。

1

誤字

2020/12/28 05:29

投稿

AbcdefgFirst
AbcdefgFirst

スコア33

test CHANGED
File without changes
test CHANGED
@@ -1,9 +1,163 @@
1
- お世話になっております。
1
+ いつもお世話になっております。
2
+
3
+ 下記のようなxmlから辞書に変換したいのですが、自分の知識では正確な書き方が分かりませんでした。
2
4
 
3
5
 
4
6
 
7
+ ### 補足事項
8
+
9
+ ・欲しい辞書のキー⇒subcodesで固定
10
+
11
+
12
+
13
+ ・欲しい辞書の値
14
+
15
+ {option name属性}:{option value属性}#{option name属性}:{option value属性}={SubCodeのcode属性} |
16
+
17
+ {option name属性}:{option value属性}#{option name属性}:{option value属性}={SubCodeのcode属性}
18
+
19
+
20
+
21
+ Subcode要素が増えたら区切り「|」の数が増えます。
22
+
23
+ Option要素が増えたら区切り「#」の数が増えます。
24
+
25
+ Option要素の数は変動しますが、各Subcode要素の中に入るOptionの数と並びは共通です。
26
+
27
+
28
+
29
+ 分かり辛く申し訳ありません。。
30
+
31
+
32
+
33
+ ```xml
34
+
35
+ <Result>
36
+
37
+ <SubCodes>
38
+
39
+ <SubCode code="item-code-red-s">
40
+
41
+ <Option name="カラー" value="red"/>
42
+
43
+ <Option name="サイズ" value="small"/>
44
+
45
+ </SubCode>
46
+
47
+ <SubCode code="item-code-red-m">
48
+
49
+ <Option name="カラー" value="red"/>
50
+
51
+ <Option name="サイズ" value="medium"/>
52
+
53
+ </SubCode>
54
+
55
+      ・
56
+
57
+      ・(中略)
58
+
59
+      ・
60
+
61
+ </SubCodes>
62
+
63
+  </Result>
64
+
65
+ ```
66
+
67
+
68
+
69
+ 欲しい辞書型↓
70
+
5
71
  ```python
6
72
 
7
- dic=
73
+ dict = {'subcodes:':'カラー:red#サイズ:small=item-code-red-s|カラー:red#サイズ:medium=item-code-red-m'}
8
74
 
9
75
  ```
76
+
77
+
78
+
79
+ ### 試したコード
80
+
81
+ 色々書いたり消したりして今のところ下記のコードになったのですが、これだと希望の区切り文字がバラバラのため区切り文字を変化させるのが難く躓いております。
82
+
83
+ ```python
84
+
85
+ import xml.etree.ElementTree as ET
86
+
87
+
88
+
89
+ subcodes = root.findall('Result/SubCodes/SubCode')
90
+
91
+ dict = {}
92
+
93
+ for subcode in subcodes:
94
+
95
+ lst = []
96
+
97
+ code = subcode.attrib['code']
98
+
99
+ options = subcode.findall('Option')
100
+
101
+
102
+
103
+ for option in options:
104
+
105
+ lst.append(option.attrib['name'])
106
+
107
+ lst.append(option.attrib['value'])
108
+
109
+
110
+
111
+ lst.append(code)
112
+
113
+ print(lst)
114
+
115
+
116
+
117
+ '''
118
+
119
+ #一つの区切り文字しかできない
120
+
121
+ dict['subcodes'] = ','.join(lst)
122
+
123
+
124
+
125
+ #要素数が変動するので何番目などで条件分けできない
126
+
127
+ str = ''
128
+
129
+ for idx, val in lst:
130
+
131
+ if idx == 0:
132
+
133
+ str += val + ':'
134
+
135
+     (略)
136
+
137
+ '''
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+ #lst
146
+
147
+ #['カラー', 'red', 'サイズ', 'small', 'item-code-red-s']
148
+
149
+ #['カラー', 'red', 'サイズ', 'medium', 'item-code-red-m']
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+ ```
158
+
159
+
160
+
161
+ お力添えを頂けませんでしょうか。
162
+
163
+ 宜しくお願い致します。