为什么创建变量并使用该变量作为引用会导致混乱?

PHPz
发布: 2024-07-31 06:39:22
原创
1278 人浏览过

Why creating a variable and using that variable as reference can lead to confusion?

介绍

在 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)

登录后复制

解释:

  1. 定义变量:

    • html1、html2、html3、html4 定义为您要解析的内容。
  2. 变量查找字典:

    • 创建 html_dict 将字符串名称映射到其相应的内容。
  3. 迭代键:

    • 循环生成键“html1”到“html4”。
    • key = f"html{i}" 构造密钥。
    • html = html_dict[key] 检索与该键关联的内容。
  4. 解析并打印:

    • 使用 BeautifulSoup 解析 HTML 内容。
    • 打印解析的内容。

输出:

---- Test 1
---- Test 2
---- Test 3
---- Test 4
登录后复制

这种方法根据迭代索引动态访问变量的内容并正确打印预期内容。

以上是为什么创建变量并使用该变量作为引用会导致混乱?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!