站长在线零基础Python完全自学教程19:python中字符串完全解读
欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第19课《 python中字符串完全解读》。本节课是一个大课,我分了这些知识点进行详细讲解:字符串编码转换:encode编码和decode解码详解、使用“+”运算符来拼接字符串详解、使用len()函数计算字符串的长度详解、使用索引和切片的方法截取字符串详解、使用split()方法分割、使用join()方法合并字符串详解、检索字符串的5大方法详解、字符串中字母的大小写转换的4大方法详解、去除字符串中的空格和特殊字符的4个方法详解、格式化字符串的两种方法详解。
欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 python完全自学教程》今天给大家分享的是第19课《 Python中字符串完全解读》。本节课是一个大课,我分了这些知识点进行详细讲解:字符串编码转换:encode编码和decode解码详解、使用“+”运算符来拼接字符串详解、使用len()函数计算字符串的长度详解、使用索引和切片的方法截取字符串详解、使用split()方法分割、使用join()方法合并字符串详解、检索字符串的5大方法详解、字符串中字母的大小写转换的4大方法详解、去除字符串中的空格和特殊字符的4个方法详解、格式化字符串的两种方法详解。
我们在《Python中的基本数据类型》中,学习过:字符串就是连续的字符序列,可以是计算机能够表示的一切字符的集合。字符串属于不可变序列,通常用单引号(' ')、双引号(" ")或者三引号(''' '''或""" """)括起来。还提到了字符串常用的转义字符。今天主要来讲解一下字符串编码转换。
19.1:Python中字符串编码转换encode编码和decode解码详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中字符串编码转换:encode编码和decode解码详解》。本知识点主要内容有:常用编码简介、使用encode()方法编码、使用decode()方法解码、Unicode和UTF-8的关系说明。
19.1.1、常用编码简介
19.1.1.1、ASCII,即美国标准信息交换码,1967年制定,主要用于美国和西欧,它仅对10个数字、26个大写英文字母、26个小写英文字母,以及一些其他符号进行了编码。ASCII码最多只能表示256个符号,每个字符占一个字节(bytes)。
19.1.1.2、GB2312,国家简体中文字符集,1980年制定,兼容ASCII。每个中文字符占两个字节。
19.1.1.3、Unicode,国际标准组织统一标准字符集,1991年制定。Unicode包含了跟全球所有国家编码的映射关系。每个字符占两个字节。
19.1.1.4、UTF-8,国际通用编码,制定于1992年,对全世界所有国家用到的字符都进行了编码。UTF-8采用一个字节表示英文字符,用三个字节表示中文。在Python3.x中默认的编码就是UTF-8编码,这就有效的解决了中文乱码的问题。
19.1.1.5、GBK,为GB2312的扩展字符集,兼容GB2312,支持繁体字,1995年制定。每个中文字符占两个字节。
在Python中,有两种常用的字符串类型,分别为str和bytes。其中,str表示Unicode字符(ASCII或者其他);bytes表示二进制数据(包括编码的文本)。这两种类型的字符串不能拼接在一起使用。通常情况下,str在内存中以Unicode表示,一个字符对应若干个字节。但是如果在网络上传输,或者保存到磁盘上,就需要把str转换为字节类型,即bytes类型。
bytes类型的数据是带有b前缀的字符串(用单引号或双引号表示),例如,b'\xd2\xb0'和b'QQ'都是bytes类型的数据。
str和bytes之间可以通过encode()和decode()方法进行转换,这两个方法是互为逆过程。下面分别进行介绍。
19.1.2、使用encode()方法编码
encode()方法为str对象的方法,用于将字符串转换为二进制数据(即bytes),也称为“编码”,其语法格式如下:
str.encode([encoding="utf-8"][,errors="strict"])
参数说明如下:
str:表示要进行转换的字符串。
encoding="utf-8":可选参数,用于指定进行转码时采用的字符编码,默认为UTF-8,如果想使用简体中文,也可以设置为gb2312。当只有这一个参数时,也可以省略前面的“encoding=”,直接写编码。
errors="strict":可选参数,用于指定错误处理方式,其可选择值可以是strict(遇到非法字符就抛出异常)、ignore(忽略非法字符)、replace(用“?”替换非法字符)或xmlcharrefreplace(使用XML的字符引用)等,默认值为strict。
说明
在使用encode()方法时,不会修改原字符串,如果需要修改原字符串,需要对其进行重新赋值。
例如,定义一个名称为a的字符串,内容为“星星之火可以燎原”,然后使用encode()方法将其采用GBK编码转换为二进制数,并输出原字符串和转换后的内容,代码如下:
a = '星星之火可以燎原'
b = a.encode('gbk') # 将gbk编码转换为二进制数据,不处理异常
print('原字符串:',a) # 输出原字符串
print('转换后:',b) # 输出转换后的二进制数据
上面的代码执行后,将显示以下内容。
原字符串: 星星之火可以燎原
转换后: b'\xd0\xc7\xd0\xc7\xd6\xae\xbb\xf0\xbf\xc9\xd2\xd4\xc1\xc7\xd4\xad'
>>>
如果采用UTF-8编码,转换后的二进制数据为:
a = '星星之火可以燎原'
b = a.encode('utf-8') # 将utf-8编码转换为二进制数据,不处理异常
print('原字符串:',a) # 输出原字符串
print('转换后:',b) # 输出转换后的二进制数据
原字符串: 星星之火可以燎原
转换后: b'\xe6\x98\x9f\xe6\x98\x9f\xe4\xb9\x8b\xe7\x81\xab\xe5\x8f\xaf\xe4\xbb\xa5\xe7\x87\x8e\xe5\x8e\x9f'
>>>
19.1.3、使用decode()方法解码
decode()方法为bytes对象的方法,用于将二进制数据转换为字符串,即将使用encode()方法转换的结果再转换为字符串,也称为“解码”。
其语法格式如下:
bytes.decode([encoding="utf-8"][,errors="strict"])
参数说明如下:
bytes:表示要进行转换的二进制数据,通常是encode()方法转换的结果。
encoding="utf-8":可选参数,用于指定进行解码时采用的字符编码,默认为UTF-8,如果想使用简体中文,也可以设置为gb2312。当只有这一个参数时,也可以省略前面的“encoding=”,直接写编码。
errors="strict":可选参数,用于指定错误处理方式,其可选择值可以是strict(遇到非法字符就抛出异常)、ignore(忽略非法字符)、replace(用“?”替换非法字符)或xmlcharrefreplace(使用XML的字符引用)等,默认值为strict。
站长在线提醒您:在使用decode()方法时,不会修改原字符串,如果需要修改原字符串,需要对其进行重新赋值。
例如,将上面示例中编码后得到二进制数据(保存在变量b中)进行解码,可以使用下面的代码:
a = b'\xd0\xc7\xd0\xc7\xd6\xae\xbb\xf0\xbf\xc9\xd2\xd4\xc1\xc7\xd4\xad'
print('解码后:',a.decode("gbk")) # 对进行制数据进行解码
上面的代码执行后,将显示以下内容:
解码后: 星星之火可以燎原
>>>
同样的,我们选择utf-8的字符串也是可以的
a = b'\xe6\x98\x9f\xe6\x98\x9f\xe4\xb9\x8b\xe7\x81\xab\xe5\x8f\xaf\xe4\xbb\xa5\xe7\x87\x8e\xe5\x8e\x9f'
print('解码后:',a.decode("utf-8")) # 对进行制数据进行解码
上面的代码执行后,将显示以下内容:
解码后: 星星之火可以燎原
>>>
站长在线提醒您:在设置解码采用的字符编码时,需要与编码时采用的字符编码一致。
本文相关知识扩展阅读:
19.1.4、Unicode和UTF-8的关系说明
Unicode直接支持全球所有语言,包含了跟全球所有国家编码的映射关系。
Unicode解决了字符和二进制的对应关系,但是使用unicode的每一个字符,都占用了两个字节,太浪费空间。如unicode表示“Python”需要12个字节才能表示,比原来ASCII表示增加了1倍。
由于计算机的内存比较大,并且字符串在内容中表示时也不会特别大,所以内容可以使用unicode来处理,但是存储和网络传输时一般数据都会非常多,那就不能这样传输了。
为了解决存储和网络传输的问题,出现了Unicode Transformation format,学术名UTF,即:对unicode中的进行格式转换,以便于在存储和网络传输时可以节省空间!
UTF-8: 使用1、2、3、4个字节表示所有字符;优先使用1个字符、无法满足则使增加一个字节,最多4个字节。英文占1个字节、欧洲语系占2个、东亚语系占3个,其它及特殊字符占4个。
UTF-16: 使用2、4个字节表示所有字符;优先使用2个字节,否则使用4个字节表示。
UTF-32: 使用4个字节表示所有字符。
总结:UTF 是为unicode编码 设计 的一种在存储和传输时节省空间的编码方案。
19.2:在Python中使用“+”运算符来拼接字符串详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中使用“+”运算符来拼接字符串详解》。本知识点主要内容有:在Python中,我们可以使用“+”运算符来连接多个字符串,并产生新的字符串对象。以及字符串与其他类型的数据拼接的时候出现的异常及解决办法。
上一个知识点我们讲到了字符串的常用编码,以及使用encode()方法编码和使用decode()方法解码,今天来大家分享的是字符串的常用操作中的拼接字符串。
在Python中,我们可以使用“+”运算符来连接多个字符串,并产生新的字符串对象。(多合一)
例如,定义两个字符串,一个用于保存英文,另一个用于保存中文,然后使用“+”运算符来连接,代码如下:
en = 'hello,world!'
cn = '你好,世界!'
print(en+' ' +cn)
运行结果为:
hello,world! 你好,世界!
>>>
字符串不允许直接与其他类型的数据拼接。比如下面代码,就是将字符串与数值拼接,就会产生TypeError
异常:
str1 = 'Python诞生于'
num1 = 1989
str2 = '年圣诞节期间,'
num2 = 1991
str3 = '年第一个公开版正式发行。'
print(str1 + num1 + str2 + num2 + str3)
运行结果为:
Traceback (most recent call last):
File "D:\Python\Python310\Doc\000.py", line 6, in <module>
print(str1 + num1 + str2 + num2 + str3)
TypeError: can only concatenate str (not "int") to str
>>>
哈哈哈,我的英语差,我最喜欢把英文错误的提示,翻译出来:(希望小白的你,能够和我一样的做法)TypeError: can only concatenate str (not "int") to str 翻译为:TypeError:只能将str(而不是“int”)连接到str。
这样翻译一下,我就懂了,就是说:类型不合适引发的错误:只能将字符串类型数据而不是整型数据连接到字符串类型数据。
通过IDE里面直接给出了错误的提示,我们来解决问题就很容易了。我们可以使用str()函数将整数转换为字符串就可以了。代码如下:
str1 = 'Python诞生于'
num1 = 1989
str2 = '年圣诞节期间,'
num2 = 1991
str3 = '年第一个公开版正式发行。'
print(str1 + str(num1) + str2 + str(num2) + str3)
运行结果为:
Python诞生于1989年圣诞节期间,1991年第一个公开版正式发行。
>>>
这下就非常的完美了。
上面输出的是一行的,下面我在来演示一个换行的。
如:定义一个用于保存老师的问题的字符串,再定义一个用于保存学生回答的答案的字符串,再将两个字符串拼接在一起,并且在中间拼接一个换行符,最后输出,代码如下:
wen = '老师问:世界上最高的山峰是什么?'
da = '学生答:珠穆朗玛峰'
print(wen + '\n' + da)
运行结果为:
老师问:世界上最高的山峰是什么?
学生答:珠穆朗玛峰
>>>
使用“+”运算符来连接多个字符串是不是非常的简单呢?稍后,我们会讲到分割和合并字符串的时候,会讲到使用join()方法来合并字符串,本文就不多严罗!
19.3:在Python中使用len()函数计算字符串的长度详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中使用len()函数计算字符串的长度详解》。本知识点主要内容有:在Python中使用len()函数计算字符串在UTF-8编码中的长度和使用len()函数计算字符串在GBK编码中的长度。
在Python中,不同的字符采用的编码不同,所占用的字节数也是不同的。要想计算字符串的长度,先了解字符所占用的字节数。
我们在字符串的编码转换中学过,汉字在GBK/GB2312中一个中文字符,占两个字节。在UTF-8中一般占3个字节(或者4个字节)。
在Python中,提供了len()函数计算字符串的长度,其语法如下:
len(string)
其中,string用于指定要进行长度统计的字符串。
例如,定义一个字符串,内容为“Python是当下最热门的编程语言”,然后应用len()函数计算该字符串的长度,代码如下:
str = 'Python是当下最热门的编程语言' # 定义字符串
a = len(str) # 计算字符串的长度
print(a) # 输出字符串的长度
运行结果为:
17
>>>
从上面的结果可以看出,在默认的情况下,通过len()函数计算字符串的长度时,不区分英文,数字和汉字,所有的字符都认为是一个字符。
但是在实际开发中,需要获取字符串实际所占用的字节数。如果采用gbk或者gb2312编码,则一个汉字占用两个字节;采用utf-8编码,则一个汉字占用3个字节。这时,我们可以通过encode()方法进行编码后再进行获取。
19.3.1、采用默认编码UTF-8编码时,获取字符串“Python是当下最热门的编程语言”的长度,代码为:
str = 'Python是当下最热门的编程语言' # 定义字符串
a = len(str.encode('utf-8')) # 计算utf-8编码的字符串的长度
print(a) # 输出字符串的长度
运行结果为:
39
>>>
为什么是39呢?是因为在utf-8的编码中,一个汉字占3个字节,一共11个汉字就是33个字节,加上6个英文字母占6个字节,就是39个字节了。
下面我们在来使用GBK编码的长度时多少?
19.3.2、用默认编码GBK编码时,获取字符串“Python是当下最热门的编程语言”的长度,代码为:
str = 'Python是当下最热门的编程语言' # 定义字符串
a = len(str.encode('gbk')) # 计算gbk编码的字符串的长度
print(a) # 输出字符串的长度
运行结果为:
28
>>>
为什么是28呢?因为在GBK的编码中,一个汉字占2个字节,一共11个汉字占22个字节,加上6个英文字母占6个字节,就是28个字节了。
站长在线提醒您,因为UTF-8编码是Python3中的默认编码,在进行计算编码时,可以不用输入。即下面代码也是对的:
str = 'Python是当下最热门的编程语言' # 定义字符串
a = len(str.encode()) # 计算默认编码utf-8编码的字符串的长度
print(a) # 输出字符串的长度
运行结果为:
39
>>>
19.4:在Python中使用索引和切片的方法截取字符串详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中使用索引和切片的方法截取字符串详解》。本知识点主要内容有:使用索引的方法截取一个字符串和使用切片的方法截取一段字符串。
字符串也是属于序列,在Python中如果是截取一个字符串,可以使用索引的的方法,如果截取一段字符串可以使用切片的方法。
19.4.1、使用索引的方法截取一个字符串。
方法如下:
string[index]
其中。string为字符串名字,index 表示索引值。
定义一个字符串的值为“Python是当下最热门的编程语言”获取他的第2个,第8个和倒数第2个的字符串的值,代码如下:
a = 'Python是当下最热门的编程语言' # 定义一个字符串
print(a[1]) # 获取字符串的第2个的值
print(a[7]) # 获取字符串的第8个的值
print(a[-2]) # 获取字符串的倒数第2个的值
运行结果如下:
y
当
语
>>>
当索引不存在时,就会抛出IndexError
异常:
a = 'Python是当下最热门的编程语言' # 定义一个字符串
print(a[25]) # 获取字符串的第25个的值
运行结果为:
Traceback (most recent call last):
File "D:\Python\Python310\Doc\000.py", line 2, in <module>
print(a[25]) # 获取字符串的第25个的值
IndexError: string index out of range
>>>
昨天站长在线分享了《Python内置异常速查表》知道IndexError
这是索引超出范围引发的错误。
要解决这个异常的问题,我们可以使用try...except语句,代码如下:
a = 'Python是当下最热门的编程语言' # 定义一个字符串
try:
a1 = a[25] # 截取第25个字符
except :
print('指定的索引不存在') # 输出'指定的索引不存在'
运行结果为:
指定的索引不存在
>>>
19.4.2、使用切片的方法截取一段字符串。
方法如下:
string[start:end:step]
其中,相关参数说明如下:
string:表示要截取的字符串;
start:表示要截取的第一个字符的索引(包括该字符),如果不指定,则默认为0;
end:表示要截取的最后一个字符的索引(不包括该字符),如果不指定,则默认为字符串的长度;
step:表示切片的步长,如果省略,则默认为1,当省略该步长时,最后一个冒号也可以省略。
例如,定义一个字符串,然后应用切片方法截取不同长度的字符串,并输出,代码如下:
a = 'Python是当下最热门的编程语言' # 定义一个字符串
a1 = a[0] # 截取字符串的第一个值
a2 = a[6:] # 从字符串的第7个值开始截取
a3 = a[:6] # 从字符串的左边开始截取6个字符
a4 = a[6:10] # 截取字符串的第7到第10个字符
print('原字符串:',a) # 输出原字符串
print('截取字符串的第一个值为:',a1)
print('从字符串的第7个值开始截取的值为:',a2)
print('从字符串的左边开始截取6个字符的值为:',a3)
print('截取字符串的第7到第10个字符的值为:',a4)
运行结果为:
原字符串: Python是当下最热门的编程语言
截取字符串的第一个值为: P
从字符串的第7个值开始截取的值为: 是当下最热门的编程语言
从字符串的左边开始截取6个字符的值为: Python
截取字符串的第7到第10个字符的值为: 是当下最
>>>
经典实例,通过输入身份证号码,输出:出生日期和生日。
假设小明的身份证号码为******19901225****(隐藏重要信息),输出小明的出生日期和生日,代码如下:
sfz = '******19901225****'
csrq = sfz[6:10] + '年' + sfz[10:12] + '月' + sfz[12:14] + '日'
sr = sfz[10:12] + '月' + sfz[12:14] + '日'
print('小明的出生日期是:',csrq)
print('小明的生日是:',sr)
运行结果为:
小明的出生日期是: 1990年12月25日
小明的生日是: 12月25日
>>>
19.5:在Python中使用split()方法分割、使用join()方法合并字符串详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中使用split()方法分割、使用join()方法合并字符串详解》。本知识点主要内容有:在Python中使用split()方法分割字符串和在Python中使用join()方法合并字符串。
在Python中,字符串对象提供了分割和合并字符串的方法。分割字符串是把字符串分割为列表,而合并字符串是把列表合并为字符串,它们可以看作是互逆操作。下面分别进行介绍。
19.5.1.在Python中使用split()方法分割字符串
字符串对象的split()方法可以实现字符串分割。即把一个字符串按照指定的分隔符切分为字符串列表。该列表的元素中,不包括分隔符。split()方法的语法格式如下:
str.split(sep, maxsplit)
参数说明如下:
str:表示要进行分割的字符串。
sep:用于指定分隔符,可以包含多个字符,默认为None,即所有空字符(包括空格、换行“\n”、制表符“\t”等)。
maxsplit:可选参数,用于指定分割的次数,如果不指定或者为−1,则分割次数没有限制,否则返回结果列表的元素个数最多为maxsplit+1。
返回值:分割后的字符串列表。
站长在线温馨提示:在split()方法中,如果不指定sep参数,那么也不能指定maxsplit参数。
例如,定义一个保存站长在线网址的字符串,然后应用split()方法根据不同的分隔符进行分割,代码如下:
a = '站 长 在 线 | zhan zhang zai xian'
a1 = a.split() # 采用默认分隔符进行分隔
a2 = a.split(',') # 采用,进行分隔
a3 = a.split(',',2) # 采用,进行分隔,且只是分隔前2个
a4 = a.split(' ',2) # 采用空格进行分隔,且只是分隔前2个
print('a原字符串:',a)
print('a1:',a1)
print('a2:',a2)
print('a3:',a3)
print('a4:',a4)
运行结果如下:
a原字符串: 站 长 在 线 | zhan zhang zai xian
a1: ['站', '长', '在', '线', '|', 'zhan', 'zhang', 'zai', 'xian']
a2: ['站 长 在 线 | zhan zhang zai xian']
a3: ['站 长 在 线 | zhan zhang zai xian']
a4: ['站', '长', '在 线 | zhan zhang zai xian']
>>>
结果分析:
在a1中,采用默认为空的分隔符进行分隔,显示时就会被系统默认的逗号“,
”进行了分隔,是有效的。
在a2中,采用,进行分隔,是无效的
在a3中,采用,进行分隔,且只是分隔前2个,也是无效的。
在a4中,采用空格进行分隔,且只是分隔前2个,却是有效的。
这就说明了,使用split()方法如果不指定maxsplit参数的话,就使用默认为空的分隔符;要想指定maxsplit参数的话,sep的值,就只能使用空格了。
站长在线温馨提示:目前在返回的值中,Python仅支持默认的逗号“,
”,看了很多的教程,居然sep可以指定,各种各样的分隔符,但是返回的值都是无效的,我也不知道其他的教程,这样写有什么意义。如下面的其他分隔符:
a = '站 长 在 线 | zhan zhang zai xian'
a1 = a.split() # 采用默认分隔符进行分隔
a2 = a.split(' ',2) # 采用空格进行分隔,且只是分隔前2个
a3 = a.split(',',2) # 采用,进行分隔,且只是分隔前2个
a4 = a.split('.') # 采用.进行分隔
a5 = a.split('*') # 采用*进行分隔
a6 = a.split('~') # 采用~进行分隔
a7 = a.split('>>>') # 采用>>>进行分隔
a8 = a.split('>') # 采用>进行分隔
print('a原字符串:',a)
print('a1:',a1)
print('a2:',a2)
print('a3:',a3)
print('a4:',a4)
print('a5:',a5)
print('a6:',a6)
print('a7:',a7)
print('a8:',a8)
运行结果为:
a原字符串: 站 长 在 线 | zhan zhang zai xian
a1: ['站', '长', '在', '线', '|', 'zhan', 'zhang', 'zai', 'xian']
a2: ['站', '长', '在 线 | zhan zhang zai xian']
a3: ['站 长 在 线 | zhan zhang zai xian']
a4: ['站 长 在 线 | zhan zhang zai xian']
a5: ['站 长 在 线 | zhan zhang zai xian']
a6: ['站 长 在 线 | zhan zhang zai xian']
a7: ['站 长 在 线 | zhan zhang zai xian']
a8: ['站 长 在 线 | zhan zhang zai xian']
>>>
所以站长在线认为:
使用split()方法如果不指定maxsplit参数的话,sep的值就使用默认为空的分隔符,显示结果会用逗号“,”分隔;sep的值使用其他字符串,都是无效的。
使用split()方法如果指定maxsplit参数的话,sep的值就只能使用空格了,显示结果会用逗号“,”分隔;sep的值使用其他字符串,都是无效的。
19.5.2、在Python中使用join()方法合并字符串
我在《在Python中使用“+”运算符来拼接字符串详解》中提到了使用join()方法来拼接字符串,但是没有深入的讲解,本知识点就来深入的进行讲解了。
其实,合并字符串与拼接字符串有所不同(当然也有相同的时候),它会将多个字符串采用固定的分隔符连接在一起。
join() 方法也是非常重要的字符串方法,它是 split() 方法的逆方法,用来将列表(或元组)中包含的多个字符串连接成一个字符串。
合并字符串可以使用字符串对象的join()方法实现。其语法格式如下:
strnew = string.join(iterable)
其中,相关参数说明如下:
strnew:表示合并后生成的新字符串。
string:字符串类型,用于指定合并时的分隔符。
iterable:可迭代对象,该迭代对象中的所有元素(字符串表示)将被合并为一个新的字符串。string作为边界点分割出来。
例如,字符串“美琳*梦洁*雪丽*美莲”,就可以是通过分隔符“*”将['美琳','梦洁', '雪丽', '美莲']列表合并为一个字符串的结果。
b = ['美琳','梦洁', '雪丽', '美莲']
a = '*'.join(b)
print(a)
运行结果为:
美琳*梦洁*雪丽*美莲
>>>
站长在线温馨提醒,使用join() 方法合并字符串对象的时候,这个是可以 使用任意分隔符的了,如:
b = ['WWW','olzz', 'com']
a = '.'.join(b)
print(a)
运行结果为:
www.olzz.com
>>>
19.6:在Python中检索字符串的5大方法详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中检索字符串的5大方法详解》。本知识点主要内容有:使用count()方法检索指定字符串在另一个字符串中出现的次数、使用find()方法检索是否包含指定的子字符串、使用index()方法检索是否包含指定的子字符串、使用startswith()方法用于检索字符串是否以指定子字符串开头和使用endswith()方法用于检索字符串是否以指定子字符串结尾。
在Python中,字符串对象提供了很多应用于字符串查找的方法,站长在线这里介绍采用的5个方法:
19.6.1、使用count()方法检索指定字符串在另一个字符串中出现的次数。
我们在《在python中对列表进行统计和计算详解》学过使用count()方法获取指定的元素的出现次数。在这里也是可以检索字符串的。
count()方法用于检索指定字符串在另一个字符串中出现的次数。如果检索的字符串不存在,则返回0,否则返回出现的次数。其语法格式如下:
str.count(sub[, start[, end]])
其中,相关参数说明如下:
str:表示原字符串;
sub:表示要检索的子字符串;
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索;
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。
例如,定义一个字符串:“大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。”然后应用count()方法检索该字符串中“小妹”、“小麦”出现的次数,代码如下:
a = '大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。'
b = '小妹'
c = '小麦'
print('小妹出现的次数:',a.count(b))
print('小麦出现的次数:',a.count(c))
运行结果如下:
小妹出现的次数: 5
小麦出现的次数: 2
>>>
当检索的关键字不存在时,返回结果为0,代码如下:
a = '大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。'
b = '小哥'
print('小哥出现的次数:',a.count(b))
运行结果如下:
小哥出现的次数: 0
>>>
19.6.2、使用find()方法检索是否包含指定的子字符串。
find()方法用于检索是否包含指定的子字符串。如果检索的字符串不存在,则返回−1,否则返回首次出现该子字符串时的索引。其语法格式如下:
str.find(sub[, start[, end]])
其中,相关参数说明如下:
str:表示原字符串;
sub:表示要检索的子字符串;
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索;
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。
例如,定义一个字符串:“大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。”然后应用find()方法检索该字符串中“小妹”、“小麦”首次出现的索引位置,代码如下:
a = '大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。'
b = '小妹'
c = '小麦'
print('小妹首次出现的索引位置:',a.find(b))
print('小麦首次出现的索引位置:',a.find(c))
运行结果如下:
小妹首次出现的索引位置: 3
小麦首次出现的索引位置: 21
>>>
当检索的关键字不存在时,返回结果为-1,代码如下:
a = '大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。'
b = '小哥'
print('小哥首次出现的索引位置:',a.find(b))
运行结果如下:
小哥首次出现的索引位置: -1
>>>
站长在线特别提醒:Python的字符串对象还提供了rfind()方法,其作用与find()方法类似,只是从右边开始查找。本教程就不再重复一次了。有的教程是独立做一个方法的。
19.6.3、使用index()方法检索是否包含指定的子字符串。
在Python中,index()方法与find()方法类似,也是用于检索是否包含指定的子字符串。只不过如果使用index()方法,当指定的字符串不存在时会抛出异常。其语法格式如下:
str.index(sub[, start[, end]])
其中,相关参数说明如下:
str:表示原字符串;
sub:表示要检索的子字符串;
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索;
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。
例如,定义一个字符串:“大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。”然后应用index()方法检索该字符串中“小妹”、“小麦”首次出现的索引位置,代码如下:
a = '大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。'
b = '小妹'
c = '小麦'
print('小妹首次出现的索引位置:',a.index(b))
print('小麦首次出现的索引位置:',a.index(c))
运行结果如下:
小妹首次出现的索引位置: 3
小麦首次出现的索引位置: 21
>>>
从过程和结果上看,index()方法与find()方法还真是一样的,不同的地方在于,指定字符串没有的情况下,抛出异常:如:
a = '大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。'
b = '小哥'
print('小哥首次出现的索引位置:',a.index(b))
运行结果如下:
Traceback (most recent call last):
File "D:\Python\Python310\Doc\000.py", line 3, in <module>
print('小哥首次出现的索引位置:',a.index(b))
ValueError: substring not found
>>>
我们在《Python内置异常速查表》中,知道:ValueError,就是传入的值错误。ValueError: substring not found就是 传入的值错误:未找到子字符串。
在前面的很多错误都给出了解决方法,上面的错误,修改如下:
a = '大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。'
b = '小哥'
if b in a:
print('小哥首次出现的索引位置:',a.index(b))
else:
print('你要检索的关键词不存在')
运行的结果为:
你要检索的关键词不存在
>>>
站长在线特别提醒:Python的字符串对象还提供了rindex()方法,其作用与index()方法类似,只是从右边开始查找。本教程就不再重复一次了。有的教程是独立做一个方法的。今天再次重复的话,我的教程也太多了,提醒一下,大家知道就行。最好自己运行代码一下。
19.6.4、使用startswith()方法用于检索字符串是否以指定子字符串开头。
在Python中,使用startswith()方法用于检索字符串是否以指定子字符串开头。
如果是,则返回True,否则返回False。语法格式如下:
str.startswith(prefix[, start[, end]])
其中,相关参数说明如下:
str:表示原字符串;
prefix:表示要检索的子字符串;
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索;
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。
例如,定义一个字符串:“大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。”然后应用startswith()方法检索该字符串中“小妹”、“小麦”开头的,代码如下:
a = '大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。'
b = '小妹'
c = '小麦'
print('是否以小妹开头:',a.startswith(b))
print('是否以小麦开头:',a.startswith(c))
运行结果如下:
是否以小妹开头: False
是否以小麦开头: False
>>>
我来修改一下:
a = '大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。'
b = '小'
c = '大'
print('是否以小开头:',a.startswith(b))
print('是否以大开头:',a.startswith(c))
运行结果:
是否以小开头: False
是否以大开头: True
>>>
19.6.5、使用endswith()方法用于检索字符串是否以指定子字符串结尾
在Python中,可以使用endswith()方法用于检索字符串是否以指定子字符串结尾。如果是,则返回True,否则返回False。语法格式如下:
str.endswith(suffix[, start[, end]])
其中,相关参数说明如下:
str:表示原字符串;
suffix:表示要检索的子字符串;
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索;
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。
例如,定义一个字符串:“大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。”然后应用endswith()方法检索该字符串中“。”、“麦”结尾的,代码如下:
a = '大妹和小妹,一起去收麦。大妹割大麦,小妹割小麦。大妹帮小妹挑小麦,小妹帮大妹挑大麦。大妹小妹收完麦,噼噼啪啪齐打麦。'
b = '。'
c = '麦'
print('是否以。结尾:',a.endswith(b))
print('是否以麦结尾:',a.endswith(c))
运行结果如下:
是否以。结尾: True
是否以麦结尾: False
>>>
这说明,以字符串的标点符号是计算进去的,而不是汉字。只要是最后一个字符就行。
19.7:在Python字符串中字母的大小写转换的4大方法详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python字符串中字母的大小写转换的4大方法详解》。本知识点主要内容有:使用lower()方法,把所有大写字母转换成小写字母、使用upper()方法,把所有小写字母转换成大写字母、使用capitalize()方法,仅首字母转化为大写字母,其余小写字母、使用title()方法,把每个单词的首字母转化为大写字母,其余为小写字母。
在Python中,字符串对象提供了lower()方法、upper()方法、capitalize()方法、title()方法进行字母的大小写转换。这4种方法分别对应于:把所有大写字母转换成小写字母;把所有小写字母转换成大写字母;仅首字母转化为大写字母,其余小写;把每个单词的首字母转化为大写,其余小写 。下面站长在线就一一为大家讲解。
19.7.1、使用lower()方法,把所有大写字母转换成小写字母。
lower()方法用于将字符串中的全部大写字母转换为小写字母。如果字符串中没有应该被转换的字符,则将原字符串返回;否则将返回一个新的字符串,将原字符串中每个该进行小写转换的字符都转换成等价的小写字符。字符长度与原字符长度相同。
lower()方法的语法格式如下:
str.lower()
其中,str为要进行转换的字符串。
例如,下面的代码将全部显示为小写字母。
a = 'WWW.OLzz.com'
print('原字符串输出:',a)
print('全部转换小写输出:',a.lower())
运行结果为:
原字符串输出: WWW.OLzz.com
全部转换小写输出: www.olzz.com
>>>
19.7.2、使用upper()方法,把所有小写字母转换成大写字母
使用upper()方法用于将字符串的全部小写字母转换为大写字母。如果字符串中没有应该被转换的字符,则将原字符串返回;否则返回一个新字符串,将原字符串中每个该进行大写转换的字符都转换成等价的大写字符。新字符长度与原字符长度相同。lower()方法的语法格式如下:
str.upper()
其中,str为要进行转换的字符串。
例如,下面的代码将全部显示为大写字母。
a = 'WWW.OLzz.com'
print('原字符串输出:',a)
print('全部转换大写输出:',a.upper())
运行结果为:
原字符串输出: WWW.OLzz.com
全部转换小写输出: WWW.OLZZ.COM
>>>
19.7.3、使用capitalize()方法,仅首字母转化为大写字母,其余小写字母
使用capitalize()方法用于将字符串的第一个字母转化为大写字母,其余小写。如果字符串中没有应该被转换的字符,则将原字符串返回;否则返回一个新字符串,将原字符串中第一个字母转化为大写字母,其余小写。新字符长度与原字符长度相同。capitalize()方法的语法格式如下:
str.capitalize()
其中,str为要进行转换的字符串。
例如,下面的代码把首字母转化为大写字母,其余小写字母。
a = 'WWW.OLzz.com'
print('原字符串输出:',a)
print('把首字母转化为大写字母,其余小写字母输出:',a.capitalize())
运行结果为:
原字符串输出: WWW.OLzz.com
把首字母转化为大写字母,其余小写字母输出: Www.olzz.com
>>>
19.7.4、使用title()方法,把每个单词的首字母转化为大写字母,其余为小写字母
使用title()方法,把每个单词的第一个字母转化为大写字母,其余小写字母。如果字符串中没有应该被转换的字符,则将原字符串返回;否则返回一个新字符串,将原字符串中每一个单词的第一个字母转化为大写字母,其余小写字母。新字符长度与原字符长度相同。title()方法的语法格式如下:
str.title()
其中,str为要进行转换的字符串。
例如,下面的代码把每个单词的首字母转化为大写字母,其余为小写字母。
a = 'WWW.OLzz.com'
print('原字符串输出:',a)
print('把每个单词的首字母转化为大写字母,其余为小写字母输出:',a.title())
运行结果为:
原字符串输出: WWW.OLzz.com
把每个单词的首字母转化为大写字母,其余为小写字母输出: Www.Olzz.Com
>>>
19.8:在Python中去除字符串中的空格和特殊字符的4个方法详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中去除字符串中的空格和特殊字符的4个方法详解》。本知识点主要内容有:使用strip()方法用于去掉字符串左、右两侧的空格和特殊字符、使用lstrip()方法用于去掉字符串左侧的空格和特殊字符、使用rstrip()方法用于去掉字符串右侧的空格和特殊字符、使用replace()方法,删除中间的空格和特殊字符。
用户在输入数据时,可能会无意中输入多余的空格,或在一些情况下,字符串前后不允许出现空格和特殊字符,此时就需要去除字符串中的空格和特殊字符。
这里的特殊字符是指制表符\t、回车符\r、换行符\n等。
下面站长在线就针对各种情况进行一一说明:
19.8.1、在Python中使用strip()方法用于去掉字符串左、右两侧的空格和特殊字符。
strip()方法用于去掉字符串左、右两侧的空格和特殊字符,其语法格式如下:
str.strip([chars])
其中,
str为要去除空格的字符串;
chars为可选参数,用于指定要去除的字符,可以指定多个。
例如设置chars为“@.”,则去除左、右两侧包括的“@”或“.”。如果不指定chars参数,默认将去除空格、制表符\t、回车符\r、换行符\n等。
例如,先定义一个字符串,左侧包括一个制表符和一个空格,然后去除空格和制表符;再定义一个字符串,左侧包括一个“@”符号,最后去掉“@”符号,代码如下:
str1 = ' HTTPs://WWW.olzz.com \t\n\r'
print('原字符串str1:' + str1)
print('新字符串:'+str1.strip()) # 去除字符串首尾的空格和特殊字符
str2 = '@站长在线.@.'
print('原字符串str2:' + str2)
print('新字符串:'+str2.strip('@.')) # 去除字符串首尾的“@”
运行结果如下:
原字符串str1: https://www.olzz.com
新字符串:https://www.olzz.com
原字符串str2:@站长在线.@.
新字符串:站长在线
>>>
19.8.2、使用lstrip()方法用于去掉字符串左侧的空格和特殊字符。
在Python中lstrip()方法用于去掉字符串左侧的空格和特殊字符,其语法格式如下:
str.lstrip([chars])
其中,str为要去除空格的字符串;chars为可选参数,用于指定要去除的字符,可以指定多个。
例如设置chars为“@.”,则去除左侧包括的“@”或“.”。如果不指定chars参数,默认将去除空格、制表符\t、回车符\r、换行符\n等。
例如,先定义一个字符串,左侧包括一个制表符和一个空格,然后去除空格和制表符;再定义一个字符串,左侧包括一个“@”符号,最后去掉“@”符号,代码如下:
str1 = '\t https://www.olzz.com'
print('原字符串str1:' + str1)
print('新字符串:'+str1.lstrip()) # 去除字符串左侧的空格和特殊字符
str2 = '@站长在线'
print('原字符串str2:' + str2)
print('新字符串:'+str2.lstrip('@')) # 去除字符串左侧的“@”
运行结果如下:
原字符串str1: https://www.olzz.com
新字符串:https://www.olzz.com
原字符串str2:@站长在线
新字符串:站长在线
>>>
19.8.3、使用rstrip()方法用于去掉字符串右侧的空格和特殊字符
在Python中,使用rstrip()方法用于去掉字符串右侧的空格和特殊字符,其语法格式如下:
str.rstrip([chars])
其中,str为要去除空格的字符串;chars为可选参数,用于指定要去除的字符,可以指定多个,例如设置chars为“@.”,则去除右侧包括的“@”或“.”。如果不指定chars参数,默认将去除空格、制表符\t、回车符\r、换行符\n等。
例如,先定义一个字符串,右侧包括一个制表符和一个空格,然后去除空格和制表符;再定义一个字符串,右侧包括一个逗号“,”,最后去掉逗号“,”,代码如下:
str1 = 'https://www.olzz.com \t'
print('原字符串str1:' + str1)
print('新字符串:'+str1.rstrip()) # 去除字符串右侧的空格和特殊字符
str2 = '站长在线,'
print('原字符串str2:' + str2)
print('新字符串:'+str2.rstrip(',')) # 去除字符串右侧的“,”
运行结果如下:
原字符串str1:https://www.olzz.com
新字符串:https://www.olzz.com
原字符串str2:站长在线,
新字符串:站长在线
>>>
本文中字符串str1和新字符串看起来是一样,那是因为我没有添加一个参考符号,我在后面添加一个符号,就能看出不一样了,如:
str1 = 'https://www.olzz.com \t'
print('原字符串str1:' + str1 + '。')
print('新字符串str1:'+str1.rstrip() + '。') # 去除字符串右侧的空格和特殊字符
运行结果如下:
原字符串str1:https://www.olzz.com 。
新字符串str1:https://www.olzz.com。
>>>
我在后面加了句号“。”就很容易看出差别了。原字符串里面有空格和制表符,就会占用一定的空间。
除了两边,左侧,右侧,还有一个情况,就是去除中间的空格和制表符哦,接下来,就来谈谈去掉中间的了。
19.8.4、使用replace()方法,删除中间的空格和特殊字符
在Python中,还可以使用字符串的replace()方法,删除中间的空格和特殊字符等,replace()方法主要用于字符串的替换,语法为:
str.replace(old, new[, max])
其中,str为要替换的字符串,old为替换钱的内容,如空格,特殊符号,或者其他字符都行。new为新字符串,用于替换old子字符串。max可选字符串, 替换不超过 max 次。
str1 = 'w w w . o l z z . c o m'
print('原字符串str1:',str1)
print('新字符串str1:',str1.replace(' ','')) # 去除字符串中的空格
str2 = 'www.\tolzz.com'
print('原字符串str2:',str2)
print('新字符串str2:',str2.replace('\t','')) # 去除字符串中的制表符
str3 = 'http://www.olzz.com'
print('原字符串str3:',str3)
print('新字符串str3:',str3.replace('http','https')) # http替换成https
运行结果如下:
原字符串str1: w w w . o l z z . c o m
新字符串str1: www.olzz.com
原字符串str2: www. olzz.com
新字符串str2: www.olzz.com
原字符串str3: http://www.olzz.com
新字符串str3: https://www.olzz.com
>>>
19.9:在Python中格式化字符串的两种方法详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中格式化字符串的两种方法详解》。本知识点主要内容有:使用%操作符格式化字符串和使用format()方法格式化字符串。
格式化字符串的意思是先制定一个模板,在这个模板中预留几个空位,然后再根据需要填上相应的内容。这些空位需要通过指定的符号标记(也称为占位符),而这些符号还不会显示出来。在Python中,格式化字符串有以下两种方法。
站长在线提醒你:这里的格式化字符串中的格式化,不再是我们电脑、手机常用的格式化磁盘哦,电脑和手机磁盘的格式化(format)是指对磁盘或磁盘中的分区进行初始化的一种操作,这种操作通常会导致现有的磁盘或分区中所有的文件被清除。所以大家不要混淆了两个不同的概念。
19.9.1.使用%操作符格式化字符串
在Python中,要实现格式化字符串,可以使用“%”操作符。语法格式如下:
'%[-][+][0][m][.n]格式化字符'%exp
参数说明如下:
-:可选参数,用于指定左对齐,正数前方无符号,负数前面加负号。
+:可选参数,用于指定右对齐,正数前方加正号,负数前方加负号。
0:可选参数,表示右对齐,正数前方元符号,负数前方加负号,用0填充空白处(一般与m参数一起使用)。
m:可选参数,表示占有宽度。
.n:可选参数,表示小数点后保留的位数。
格式化字符:见下方。
exp:要转换的项。如果要指定的项有多个,需要通过元组的形式进行指定,但不能使用列表。
Python中常用的格式化字符有:
%d、%i :转换为带符号的十进制整数
%o :转换为带符号的八进制整数
%x、%X :转换为带符号的十六进制整数
%e :转化为科学计数法表示的浮点数(e 小写)
%E :转化为科学计数法表示的浮点数(E 大写)
%f、%F :转化为十进制浮点数
%g :智能选择使用 %f 或 %e 格式
%G :智能选择使用 %F 或 %E 格式
%c :格式化字符及其 ASCII 码
%r :使用 repr() 函数将表达式转换为字符串
%s :使用 str() 函数将表达式转换为字符串
格式化操作符辅助符:
*:定义宽度或者小数点精度
-:用做左对齐
+:在正数前面显示加号(+)
#:在八进制数前面显示零(0),在十六进制前面显示"0x"或者"0X"(取决于用的是"x"还是"X")
0:显示的数字前面填充"0"而不是默认的空格
(var):映射变量(通常用来处理字段类型的参数)
m.n:m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
示例:格式化输出一个保存公司信息的字符串,代码如下:
demo = '编号:%03d\t 公司名称:%s \t 官网:HTTPs://WWW.%s.com' # 定义一个模板
text1 = (1,'百度','baidu') # 定义要转换的内容1
text2 = (2,'站长在线','olzz') # 定义要转换的内容2
print(demo%text1) # 格式化输出1
print(demo%text2) # 格式化输出2
运行结果如下:
编号:001 公司名称:百度 官网:https://www.baidu.com
编号:002 公司名称:站长在线 官网:https://www.olzz.com
>>>
站长在线温馨提醒:使用“%”操作符的方法是早期的方法,目前在Python 3.10中仍然有效,3.10官方最新提供的方法,只有format()方法,所以format()方法才是大家学习的重点。
19.9.2、使用format()方法格式化字符串
字符串对象提供了format()方法用于进行字符串格式化。其语法格式如下:
str.format(args)
其中,str用于指定字符串的显示样式(即模板);args用于指定要转换的项,如果有多项,则用逗号进行分隔。
下面重点介绍如何创建模板。在创建模板时,需要使用“{}”和“:”指定占位符,基本语法格式如下:
{[index][:[[fill]align][sign][#][width][.precision][type]]}
参数说明如下:
index:可选参数,用于指定要设置格式的对象在参数列表中的索引位置,索引值从0开始。如果省略,则根据值的先后顺序自动分配。
fill:可选参数,用于指定空白处填充的字符。
align:可选参数,用于指定对齐方式(值为“<”表示内容左对齐;值为“>”表示内容右对齐;值为“=”表示内容右对齐,将符号放在填充内容的最左侧,且只对数字类型有效;值为“^”表示内容居中),需要配合width一起使用。
sign:可选参数,用于指定有无符号数(值为“+”表示正数加正号,负数加负号;值为“-”表示正数不变,负数加负号;值为空格表示正数加空格,负数加负号)。
#:可选参数,对于二进制、八进制和十六进制,如果加上“#”,表示会显示0b/0o/0x前缀,否则不显示前缀。
width:可选参数,用于指定所占宽度。
.precision:可选参数,用于指定保留的小数位数。
type:可选参数,用于指定类型,
formcat()方法中常用的格式化字符如下:
s :对字符串类型格式化。
d :十进制整数。
c :将十进制整数自动转换成对应的 Unicode 字符。
e 或者 E : 转换成科学计数法后,再格式化输出。
g 或 G :自动在 e 和 f(或 E 和 F)中切换。
b :将十进制数自动转换成二进制表示,再格式化输出。
o :将十进制数自动转换成八进制表示,再格式化输出。
x 或者 X :将十进制数自动转换成十六进制表示,再格式化输出。
f 或者 F :转换为浮点数(默认小数点后保留 6 位),再格式化输出。
% :显示百分比(默认显示小数点后 6 位)。
例如,定义一个保存公司信息的字符串模板,然后应用该模板输出不同公司的信息,代码如下:
demo = '编号:{:0>3s}\t 公司名称:{:s} \t 官网:https://www.{:s}.com' # 定义一个模板
text1 = demo.format('1','百度','baidu') # 定义要转换的内容1
text2 = demo.format('2','站长在线','olzz') # 定义要转换的内容2
print(text1) # 格式化输出1
print(text2) # 格式化输出2
运行结果为:
编号:001 公司名称:百度 官网:https://www.baidu.com
编号:002 公司名称:站长在线 官网:https://www.olzz.com
>>>
format()是python2.6新增的一个格式化字符串的方法,功能非常强大,有可能在未来完全替代%格式化方法,相比 % ,format()的优点有:
1 .格式化时不用关心数据类型的问题,format()会自动转换,而在%方法中,%s用来格式化字符串类型,%d用来格式化整型;
2. 单个参数可以多次输出,参数顺序可以不同
3. 填充方式灵活,对齐方式强大
所以,我们要着重掌握format()的方法,下面讲解一个实例。
在实际开发中,数值类型有多种显示需求,比如货币形式、百分比形式等,使用 format() 方法可以将数值格式化为不同的形式。相关代码如下:
import math # 导入Python的数学模块
print('1251+3950的结果是(以货币形式显示):¥{:,.2f}元'.format(1251+3950)) # 以货币形式显示
print('{0:.1f}用科学计数法表示:{0:E}'.format(120000.1)) # 用科学计数法表示
print('π取5位小数点:{:.5f}'.format(math.pi)) # 输出小数点后五位
print('{0:d}的16进制结果是:{0:#x}'.format(100)) # 输出十六进制数
print('天才是由 {:.0%} 的灵感,加上 {:.0%} 的汗水 。'.format(0.01,0.99)) # 输出百分比,并且不带小数
运行结果为:
1251+3950的结果是(以货币形式显示):¥5,201.00元
120000.1用科学计数法表示:1.200001E+05
π取5位小数点:3.14159
100的16进制结果是:0x64
天才是由 1% 的灵感,加上 99% 的汗水 。
>>>
到此为止,本教程《 python中字符串完全解读》分的9节内容讲解就到此结束了,下一节大课开始讲解《在Python中使用正则表达式》。
相关阅读:
本站百科词条:Python (主要是讲解Python知识点汇总)
1、认识python
11、Python中的选择语句
12、Python中的循环语句
13、Python中的break语句、continue语句和pass语句
15、Python中的列表
本文地址:https://www.olzz.com/pythonzifuchuan.html
阿里云虚拟主机1G空间,120元一年
香港、美国虚拟主机100元一年,1000元永久
腾讯云双十一0.4折起,2核8G5M三年仅700元,2核4G8M三年仅198元
猜你喜欢