Python字符串处理:capwords、Template模板与format格式化详解

晚来风
晚来风
发布时间:2026-10-14 | 6人浏览过
原创

本文详细介绍Python中字符串的高效处理方法。涵盖使用string.capwords()实现首字母大写,利用string.Template及safe_substitute()进行安全的字符串模板替换,以及自定义模板规则。同时深入解析format函数的基本、进阶及高阶用法,包括对齐、精度控制及进制转换,助力提升代码效率。

一、前言

在软件开发中,掌握高效的字符串处理技巧能显著提升开发效率。字符串操作不仅是日常编程的常见需求,也是自然语言处理领域的基石知识。

Python 3标准库中提供了专门的string模块来处理字符串。本文将系统介绍该模块下多种高效的字符串处理策略。

二、首字母大写

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

Python 3提供了内置的高效函数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()方法执行字符串替换操作。

若在替换过程中,values字典中缺少模板所需的key,直接调用substitute()会引发KeyError。为此,string模块提供了safe_substitute()函数作为安全替代方案。


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函数不仅支持简单的字符串替换,还可用于文本对齐、小数位数截取等场景。以下代码展示了这些进阶用法的具体实现:


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函数还支持进制转换及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基础中文本常量与字符串模板的介绍已完成。如需了解更多Python文本常量与字符串模板相关内容,建议查阅本站过往文章或继续浏览后续系列教程。感谢大家的支持!

本站声明

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

Python 相关产品和应用

全部下载

专题列表