Python string库详解:字符串模板与格式化处理技巧

不晚
不晚
发布时间:2026-10-14 | 4人浏览过
原创

本文深入解析Python标准库string的核心功能,涵盖capwords实现英文首字母大写、Template类进行安全的字符串模板替换,以及format方法的高级格式化技巧。通过自定义分隔符、进制转换及数值对齐等实例,帮助开发者掌握高效、规范的字符串处理方案,提升代码可读性与执行效率。

一、前言

在软件开发中,掌握高效的字符串处理技巧能显著提升开发效率。字符串操作不仅是日常编码的基础,也是自然语言处理(NLP)领域的核心知识之一。

Python 3标准库提供了专门的string模块来处理字符串。本文将系统介绍该模块中各种高效且实用的字符串处理方法。

二、首字母大写处理

对于由英文单词组成的字符串,常需将每个单词的首字母转换为大写。若未掌握专用函数,通常需通过循环遍历、判断空格位置、获取ASCII编码并替换为大写字母来实现,过程较为繁琐。

Python 3的string库提供了capwords()函数,可直接实现首字母大写转换。以下代码演示了该函数的具体用法。


import string

s = "When he shewed the riches of his glorious kingdom and the honour of his excellent majesty many days, even an hundred and fourscore days"
print("原始字符串")
print(s)
result = string.capwords(s)
print("首字母大写字符串")
print(result)

运行上述代码后,输出结果将显示所有单词首字母均为大写的字符串。

三、字符串模板基础

string库中的string.Template()类可用于构建字符串模板,实现字符串拼接与替换。示例代码如下。


import string

values = {
    "name": "liyuanjing",
    "age": "13",
}

s = """My name is : $name
    I am $age years old
"""

template_str = string.Template(s)
print(template_str.substitute(values))

上述代码利用string.Template创建模板对象,并通过substitute()方法传入字典进行字符串替换。

若替换字典中缺少模板所需的key,substitute()会抛出异常。为此,string库提供了safe_substitute()函数,用于处理缺失key的情况。


import string

values = {
    "name": "liyuanjing",
    "age": "13",
}

s = """My name is : $name
    I am $age years old
    $work
"""

template_str = string.Template(s)
print(template_str.safe_substitute(values))

当字典中缺少对应值时,safe_substitute()会保留原始模板字符串不变。运行效果如下所示。

四、自定义高级模板

上述模板遵循string库的默认规则。实际上,我们可以通过继承string.Template类来自定义匹配规则,具体实现代码如下。


import string

class MyTemplate(string.Template):
    delimiter = '@'
    idpattern = '[a-z]+_[0-9]+'

values = {
    "name_1": "liyuanjing",
    "age_1": "13",
}

s = """My name is : @name_1
    I am @age_1 years old
    @work_1
"""

template_str = MyTemplate(s)
print(template_str.safe_substitute(values))

代码中,delimiter属性定义了分隔符,默认值为“$”,此处被修改为“@”。idpattern属性通过正则表达式定义了key的命名规则,例如匹配“字符串_数字”格式。运行后效果如下。

五、format格式化用法

基本格式化处理

具备其他编程语言经验的开发者通常熟悉format字符串替换。以下直接展示其基本使用方式。


print("My name is {}".format("liyuanjing"))#大括号匹配,按顺序依次填充
print("My {1} is {0}".format("liyuanjing","name"))#数字匹配,按位置依次填充
print("My {name} is {tom}".format(tom="liyuanjing",name="name"))#关键字匹配,按关键字填充

运行上述代码,输出结果如下。

六、format进阶用法

format函数不仅支持字符串替换,还可用于文本对齐、控制小数位数等场景。以下演示这些进阶用法的具体实现。


print('{} and {}'.format('tom', 'Jerry'))
print('{:10s}'.format('*'))  # 默认左对齐
print('{:>10s}'.format('*'))  # 右对齐
print('{:^10s}'.format('*'))  # 中间对齐
print('{:<10s}'.format('*'))  # 左对齐
print('{} is {:.2f}'.format(3.411592653, 3.1415926))#取2位小数
values = {
    "name_1": "liyuanjing",
    "age_1": "13",
}

s = """My name is : {name_1}
    I am {age_1} years old
"""

print(s.format(**values))

代码注释已详细说明各参数含义,此处不再赘述。运行效果如下。

七、format高阶用法

除了基础格式化,format还可用于进制转换及ASCII码符号处理。以下代码实现了这些高阶功能。


print('{:b}'.format(8))#:b转换为二进制
print('{:c}'.format(200))#:c转换Unicode字符串
print('{:d}'.format(111))#:d转换十进制
print('{:o}'.format(8))#:o转换八进制
print('{:x}'.format(32))#:x转换十六进制
print('{:e}'.format(32))#:e转换幂符号
print('{:%}'.format(0.32))#:%转换百分值
print('{:n}'.format(32000000000))#:n就是数值
print('{:g}'.format(32000000000))#:n也是数值,不过特别大时转换为幂科学计数

运行上述代码,输出结果如下。

至此,关于Python string库中文本常量与字符串模板的介绍完毕。如需了解更多Python string库相关内容,建议查阅本站过往文章或继续阅读后续系列教程,感谢大家的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表