回答編集履歴
2
d
answer
CHANGED
@@ -6,14 +6,13 @@
|
|
6
6
|
|
7
7
|
```python
|
8
8
|
from bs4 import BeautifulSoup
|
9
|
-
from bs4.element import Tag
|
10
9
|
|
11
10
|
html = "<b>あいうえお</b><i>かきくけこ<b>さしすせそ</b></i>"
|
12
|
-
|
13
11
|
soup = BeautifulSoup(html)
|
14
12
|
|
15
|
-
|
16
13
|
def traverse(node, weight):
|
14
|
+
# b タグまたは i タグが見つかった場合、重みを加算して、
|
15
|
+
# 名前を現在の重みで置き換える。
|
17
16
|
if node.name == "b":
|
18
17
|
weight += 2
|
19
18
|
node.name = str(weight)
|
@@ -21,6 +20,7 @@
|
|
21
20
|
weight += 1
|
22
21
|
node.name = str(weight)
|
23
22
|
|
23
|
+
# ノードが子を持つ場合
|
24
24
|
if hasattr(node, "children"):
|
25
25
|
for child in node.children:
|
26
26
|
traverse(child, weight)
|
1
d
answer
CHANGED
@@ -28,5 +28,6 @@
|
|
28
28
|
|
29
29
|
traverse(soup, 0)
|
30
30
|
print(soup)
|
31
|
-
# 2>あいうえお</2><1>かきくけこ<3>さしすせそ</3></1>
|
31
|
+
# <2>あいうえお</2><1>かきくけこ<3>さしすせそ</3></1>
|
32
|
+
# もし、<> を [] にしたい場合、正規表現による置換などの後処理を行ってください。
|
32
33
|
```
|