[解決済み] lxml のタグの中のすべてのテキストを取得する
2023-05-08 05:06:46
質問
の中のテキストをすべて取得するコードスニペットを書きたいと思います。
<content>
タグ内のすべてのテキストを取得するコードスニペットを書きたいのですが、以下の 3 つのインスタンスすべてにおいて、コードタグを含めて lxml で記述します。試しに
tostring(getchildren())
を試しましたが、これではタグの間のテキストが欠落してしまいます。APIで関連する関数を検索しても、あまりヒットしませんでした。あなたは私を助けることができますか?
<!--1-->
<content>
<div>Text inside tag</div>
</content>
#should return "<div>Text inside tag</div>
<!--2-->
<content>
Text with no tag
</content>
#should return "Text with no tag"
<!--3-->
<content>
Text outside tag <div>Text inside tag</div>
</content>
#should return "Text outside tag <div>Text inside tag</div>"
どのように解決するのですか?
試してみてください。
def stringify_children(node):
from lxml.etree import tostring
from itertools import chain
parts = ([node.text] +
list(chain(*([c.text, tostring(c), c.tail] for c in node.getchildren()))) +
[node.tail])
# filter removes possible Nones in texts and tails
return ''.join(filter(None, parts))
例
from lxml import etree
node = etree.fromstring("""<content>
Text outside tag <div>Text <em>inside</em> tag</div>
</content>""")
stringify_children(node)
を生成する。
'\nText outside tag <div>Text <em>inside</em> tag</div>\n'
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] XHTMLの自己完結型タグを除くオープンタグにマッチするRegEx
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] バブルソートの宿題
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] if 節の終了方法
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法