在 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中文网其他相关文章!