string库:Python的文本常量与字符串模板

简介: string库:Python的文本常量与字符串模板

前言


在程序中,有很多高效率的字符串处理方式,如果开发者能够完全掌握这些高效的字符串处理,往往在开发者也能事半功倍。比如针对于字符串的处理,也是自然语言处理的基础知识。


而python3中,处理字符串的库为:string。本篇将详细介绍各种字符串的高效处理方式。


首字母大写


对于英文单词组成的字符串来说,很多时候,我们需要对英文的首字母进行大写的变更。如果没有了解其高效率的函数,一般我们都通过循环,判断空格,取空格后一位的字母,判断其在ASCII中的编码后,取其大写替换掉该位置的字符串。


但是,python3中有一个函数可以直接将首字母大写,该函数为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怎么办?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))


因为字典没有对应的值进行替换,所以会保留原始的字符串数据。效果如下:


高级模板


上面的模板使用方法是string库默认提供的规则体系。其实,我们还可以自定义模板的使用匹配方法,具体代码如下:

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是values对应的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也是数值,不过特别大时转换为幂科学计数


运行之后,效果如下:

相关文章
|
25天前
|
程序员 Linux Python
python中模板和包的使用
本文介绍了 Python 模块和包的基本概念及使用方法。模块是 Python 程序结构的核心,每个以 `.py` 结尾的源文件都是一个模块,包含可重用的代码。文章详细讲解了模块的导入方式(如 `import` 和 `from...import`),模块的搜索顺序,以及如何创建和发布自己的模块。此外,还介绍了包的概念,包是包含多个模块的特殊目录,并通过 `__init__.py` 文件定义对外提供的模块列表。最后,文章简述了如何使用 `pip` 工具管理第三方模块的安装与卸载。作者:大石头的笔记;来源:稀土掘金。
|
2月前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
53 4
|
3月前
|
索引 Python
String(字符串)
String(字符串)。
53 3
|
3月前
|
机器学习/深度学习 自然语言处理 API
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程。通过简单的代码示例,展示如何将文本转换为自然流畅的语音,适用于有声阅读、智能客服等场景。
734 3
|
4月前
|
NoSQL Redis
Redis 字符串(String)
10月更文挑战第16天
61 4
|
4月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
80 2
|
4月前
|
canal 安全 索引
(StringBuffer和StringBuilder)以及回文串,字符串经典习题
(StringBuffer和StringBuilder)以及回文串,字符串经典习题
52 5
|
4月前
|
机器学习/深度学习 自然语言处理 大数据
使用Python进行文本情感分析
【10月更文挑战第2天】使用Python进行文本情感分析
95 3
|
4月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
57 3
|
5月前
|
Linux 开发者 iOS开发
Python中使用Colorama库输出彩色文本
Python中使用Colorama库输出彩色文本

热门文章

最新文章