Python スクリプトで、同じロジックを使用してさまざまな HTML 文字列をテストしたいと思いました。私のアプローチは、範囲をループして HTML 文字列変数の複数のインスタンスを作成することでしたが、期待どおりに機能しませんでした。
# DO NOT DO THIS for i in range(1, 5): html = f"html{i}" soup = BeautifulSoup(html, "html.parser") print('----', soup)
私が観察していた動作は、書式設定された文字列 f"html{i}" の解釈方法によるものです。私のコードでは、f"html{i}" は、html1、html2 などの名前の変数の内容ではなく、リテラル "html1"、"html2"、"html3"、および "html4" として評価されます。
Python は、f"html{i}" を、html1 や html2 などの名前が動的に作成される変数の値に自動的に置き換えません。代わりに、接頭辞「html」とその後に i.
の値が続く固定パターンとして文字列を評価します。事前定義された変数 html1、html2 などの内容を使用したい場合は、それらの値を明示的に取得する必要があります。たとえば、辞書を使用して文字列名を実際の内容にマッピングするなどです。
これを説明する例を次に示します:
from bs4 import BeautifulSoup # Define the variables html1 = "Test 1" html2 = "Test 2" html3 = "Test 3" html4 = "Test 4" # Store them in a dictionary for easy access html_dict = { "html1": html1, "html2": html2, "html3": html3, "html4": html4 } # Iterate and process each html content for i in range(1, 5): key = f"html{i}" html = html_dict[key] soup = BeautifulSoup(html, "html.parser") print('----', soup)
変数の定義:
変数検索用の辞書:
キーの反復:
解析して印刷:
---- Test 1 ---- Test 2 ---- Test 3 ---- Test 4
このアプローチは、反復インデックスに基づいて変数の内容に動的にアクセスし、意図した内容を正しく出力します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3