在 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”、“html3”和“html4”,而不是名為 html1、html2 等的變數的內容
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
這種方法根據迭代索引動態存取變數的內容並正確列印預期內容。
以上是為什麼創建變數並使用該變數作為引用會導致混亂?的詳細內容。更多資訊請關注PHP中文網其他相關文章!