news 2026/5/16 1:26:02

Python 3.12 Std_Libs - String - 07 - 格式化与编码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 3.12 Std_Libs - String - 07 - 格式化与编码

Python 3.12 Std_Libs - String - 格式化与编码


在之前的系列文章中,我们已经详细讨论了字符串的大小写转换、查找替换、去除空白与填充、分割连接、内容判断以及前缀后缀等方法。Python 的str类型还提供了几个独立且功能强大的实用方法,例如formatformat_mapencodemaketranstranslateexpandtabs,以及对齐方法centerljustrjustzfill等。这些方法在文本格式化、编码转换、字符映射等场景中扮演着重要角色。此外,标准库string中的Formatter类以及stringprep模块中的某些函数也与字符串处理相关。本文将从这些方法的用法出发,深入剖析 CPython 的底层实现,对比string模块的辅助功能,并结合国际化场景介绍stringprep的编码准备。通过大量示例和性能分析,帮助您全面掌握这些剩余的字符串实用方法。


一、字符串格式化方法:formatformat_map

1.1str.format()基础

format方法是 Python 中最强大的字符串格式化工具之一,它通过{}占位符实现灵活的替换。基本语法:

"格式化字符串".format(参数1,参数2,...)

占位符可以包含位置索引、关键字名、属性访问、元素索引以及格式说明符。

示例

print("{} + {} = {}".format(2,3,5))# 位置参数print("{a} + {b} = {c}".format(a=2,b=3,c=5))# 关键字参数print("{0[0]} {0[1]}".format([10,20]))# 序列索引访问print("{point.x} {point.y}".format(point=Point(3,4)))# 属性访问

格式说明符:之后部分):

print("{:.2f}".format(3.14159))# 3.14print("{:>10}".format("right"))# 右对齐宽度10print("{:#x}".format(255))# 0xff

1.2 底层实现(CPython)

format方法的实现位于Objects/unicodeobject.c中的unicode_format函数。它调用内部的PyUnicode_Format函数,该函数使用一个专门的解析器处理{}和格式说明符。核心步骤包括:

  1. 扫描格式字符串,识别文字部分和替换字段。
  2. 对每个替换字段,解析字段名(可能的属性或索引链),从传入的参数中获取对应的值。
  3. 根据格式说明符(如精度、对齐、类型)调用PyObject_Format转换值为字符串。
  4. 将所有部分拼接成最终字符串。

由于需要解析和动态查找,format比 f-string(编译时处理)稍慢,但依然高效。

1.3str.format_map()方法

format_map(mapping)format(**mapping)类似,但直接接受一个映射对象,而不需要解包为关键字参数。它特别适用于大型字典或自定义映射对象。

示例

data={"name":"Alice","age":30}print("Name: {name}, Age: {age}".format_map(data)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 1:22:32

基础设施测试:构建可靠的云原生基础设施验证体系

基础设施测试:构建可靠的云原生基础设施验证体系 一、基础设施测试的核心概念 1.1 基础设施测试的演进历程 基础设施测试从传统的手动验证发展到如今的自动化测试体系: 阶段特征测试方式第一阶段手动验证运维人员手动检查第二阶段脚本化测试Shell/Python…

作者头像 李华
网站建设 2026/5/16 1:22:18

多云资源管理利器:AtlasClaw Providers架构解析与开发实践

1. 项目概述与核心价值最近在搞一个多云资源管理的项目,发现了一个挺有意思的开源项目叫CloudChef/atlasclaw-providers。这名字听起来有点抽象,但说白了,它就是一个“云资源操作适配器”的集合。如果你和我一样,经常需要在不同的…

作者头像 李华
网站建设 2026/5/16 1:21:53

学生党点外卖怎么用券最划算?2026年真实省钱逻辑已更新

H1:学生党点外卖怎么用券最划算?2026年真实省钱逻辑已更新2026年,外卖平台算法持续迭代,券池动态分层、用户标签精细化、优惠叠加规则愈发隐蔽。学生党月均外卖支出超480元,但73%的人从未领全可用券——不是不想省&…

作者头像 李华
网站建设 2026/5/16 1:20:03

RBPF-SLAM室内移动机器人关键技术【附代码】

✨ 长期致力于室内移动机器人、同步定位与建图、里程计、误差状态卡尔曼滤波、灰狼优化算法研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)误差状态卡…

作者头像 李华
网站建设 2026/5/16 1:15:28

开源技能库OpenClaw-Skill:模块化构建自动化流程的实践指南

1. 项目概述:从“OpenClaw-Skill”看开源技能库的构建与价值最近在GitHub上看到一个挺有意思的项目,叫“brabaflow/openclaw-skill”。光看这个名字,可能有点摸不着头脑——“OpenClaw”是啥?“Skill”又具体指什么?这…

作者头像 李华