teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

d

2019/09/09 07:15

投稿

tiitoi
tiitoi

スコア21960

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

2019/09/09 07:15

投稿

tiitoi
tiitoi

スコア21960

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
  ```