Python的文本常量与字符串模板之string库
作者:李元静 发布时间:2022-04-11 05:13:25
一、前言
在程序中,有很多高效率的字符串处理方式,如果开发者能够完全掌握这些高效的字符串处理,往往在开发者也能事半功倍。比如针对于字符串的处理,也是自然语言处理的基础知识。
而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也是数值,不过特别大时转换为幂科学计数
运行之后,效果如下:
来源:https://liyuanjinglyj.blog.csdn.net/article/details/115482764
猜你喜欢
- 1.ACCESS查询(query_info):select * from info where stu = name1 and age =
- 读取问题如下所示,我们在文本中写了一个问题,然后将其读取出来。“黄河远上白云间,一片孤城万仞山。”的作者是谁?王之涣李白白居易杜甫file
- 目录1. threding模块创建线程对象2. threding模块创建多线程3. 多线程的参数传递4. 线程产生的资源竞争1. thred
- Python画图(线条颜色、大小、线形)先放基础代码,下面讲述效果:import matplotlib.pyplot as pltimpor
- 环境Python 3.7.4pymysql8.0.11 MySQL Community Server读取图片以二进制格式读取图片with o
- 一、Python图像处理PIL库1.1 转换图像格式# PIL(Python Imaging Library)from PIL import
- 文章所罗列的问题虽然看似简单,但是每个背后都涵盖了一个或几个大家容易忽视的基础知识点,希望能够帮助到你的面试和平时工作。Q1第一个问题关于弱
- 目录1、requests项目单元测试状况2、简单工具类如何测试2.1 test_help 实现分析2.2 test_hooks 实现分析2.
- 1.获取所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name2.获取所有表
- 本文实例讲述了python通过imaplib模块读取gmail里邮件的方法。分享给大家供大家参考。具体实现方法如下:import imapl
- 1、页签的表达。页签表达很清晰,当前页签突出,且层级包涵关系明确;看下图,一目了然的感觉,不用疑惑我在那部分里。不信?拿当当的对比一下,你感
- python 根据正则表达式提取指定的内容正则表达式是极其强大的,利用正则表达式来提取想要的内容是很方便的事。 下面演
- 本文实例讲述了Python闭包和装饰器用法。分享给大家供大家参考,具体如下:Python的装饰器的英文名叫Decorator,作用是完成对一
- 前言Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。中间件的设计
- python的一个加速器包,这里不讲原理,只讲应用过程,以及给出几个小例子,直接写就行了; 另外还给出了numba如何定义使用List1、最
- 我就废话不多说了,大家还是直接看代码吧~'''Created on 2018-4-16'''
- 在应用系统中,尤其在联机事务处理系统中,对数据查询及处理速度已成为衡量应用系统成败的标准。而采用索引来加快数据处理速度也成为广大数据库用户所
- 在浏览天极RSS订阅页面时,可以看到天极网为方便用户定制站点内容而设立的各个RSS频道。浏览者通过订阅不同的RSS(可同时订阅多个网站),就
- format函数实现字符串格式化的功能基本语法为:通过 : 和 {} 来控制字符串的操作一、对字符串进行操作1. 不设置指定位置,按默认顺序
- 本文实例讲述了Python实现的HMacMD5加密算法。分享给大家供大家参考,具体如下:什么是 HMAC-MD5?1、比如你和对方共享了一个