
本文介绍如何将格式不统一(分隔符为`;`、`:`或空格)的变量名-值字符串,稳健地解析为键值对字典,避免动态创建变量带来的安全与可维护性风险。
在Python中处理类似 'var_name; var_value var_name1; var_value1 var_name2 var_value2 var_name3: var_value3' 的字符串时,核心目标是提取成对的“变量名 → 值”映射。虽然技术上可通过 exec()、globals()[name] = value 或 locals() 动态创建变量,但强烈不推荐——这会破坏作用域清晰性、引发命名冲突、带来代码注入风险,且难以调试和测试。
✅ 推荐方案:使用字典(dict)作为结构化容器,既安全又灵活。关键在于正确切分并配对 token:
string = "var_name; var_value var_name1; var_value1 var_name2 var_value2 var_name3: var_value3"
def parse_key_value_pairs(s):
tokens = s.split()
result = {}
i = 0
while i <p>该函数鲁棒性强: </p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill11354" title="Python Pep Authoring"><img
src="https://img.php.cn/upload/skill/001/246/273/6adaf20e695c2374.jpg" alt="Python Pep Authoring" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill11354" title="Python Pep Authoring" class="overflowclass">Python Pep Authoring</a>
<p class="overflowclass">依据官方 python/peps仓库规则起草、审阅、编辑或准备 Python 改进提案(PEP),用于处理 PEP 文本和元数据头部。</p>
</div>
<a rel="nofollow" href="/xiazai/skill11354" title="Python Pep Authoring" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div>
- 自动剥离键末尾的 ; 和 :,保留原始键名完整性;
- 使用显式循环替代 range(0, len(tokens), 2),避免偶数/奇数 token 数量异常导致的 IndexError;
- 支持混合分隔方式(如 key; value、key: value、key value)无缝共存。
? 进阶提示:
- 若值本身含空格(如 'user_name; "John Doe"'),需改用正则或更高级解析器(如 shlex);
- 如需类型自动转换(如数字转 int/float),可在赋值前添加 try/except 类型推断逻辑;
- 解析结果字典可直接用于配置加载、参数传递或 JSON 序列化,符合 Python 最佳实践。
总之,用字典代替动态变量,是清晰、安全、可扩展的首选路径。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










