站长在线零基础Python完全自学教程19:python中字符串完全解读

    时间: 浏览:590次  来源:站长在线
欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 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知识点汇总)

《零基础Python完全自学教程》目录 

1、认识python

2、安装python及写第一个Python程序

3、Python开发工具介绍

4、Python语法特点

5、Python中的变量

6、Python中的基本数据类型

7、Python中的基本输入和输出

8、Python中常用的运算符

9、Python中运算符的优先级和条件表达式

10、Python中的三大程序结构

11、Python中的选择语句

12、Python中的循环语句

13、Python中的break语句、continue语句和pass语句

14、Python中的序列知识详解

15、Python中的列表

16、Python中的元组系列知识

17、Python中的字典完全解读

18、Python中的集合完全解读

19、Python中字符串完全解读

本文地址:https://www.olzz.com/pythonzifuchuan.html
码字不易,打个赏呗
站长在线小编感谢你的支持!

猜你喜欢

域名pythonw.cn出售

域名pythonw.cn的详细信息:Python网

2022-08-06  分类:域名出售  浏览:39次


站长在线Python教程:Python中类定义详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中类定义详解》。

2022-02-23  分类:Python学堂  浏览:369次


站长在线Python教程:python中面向对象相关概述详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《python中面向对象相关概述详解》。本文的主要内容有:面向对象是什么、面向对象中的对象是什么、Python中的类是什么、面向对象编程的特点有哪些?

2022-02-14  分类:Python学堂  浏览:312次


站长在线零基础Python完全自学教程23:函数的返回值、作用域和匿名函数

导读:欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第23课《函数的返回值、作用域和匿名函数》。本文是一个大课程分成了下面4节小课程:Python中函数的返回值、Python函数中的局部变量、Python函数中的全局变量、Python函数中的匿名函数等内容。

2022-02-09  分类:Python学堂  浏览:287次


站长在线Python教程:Python函数中的匿名函数详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python函数中的匿名函数详解》。本文的主要内容有:匿名函数的定义、匿名函数的表达式、匿名函数的注意点、匿名函数的优点、匿名函数的应用举例。

2022-02-01  分类:Python学堂  浏览:321次


站长在线Python教程精讲:在Python函数中的全局变量详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中的全局变量详解》。本文的主要内容有:什么是全局变量、在函数外部定义的变量是全局变量、在函数内部定义中添加global关键词后变成全局变量。

2022-01-10  分类:Python学堂  浏览:441次


站长在线Python教程精讲:在Python函数中的局部变量详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python函数中的局部变量详解》。本文的主要内容有:变量的作用域的概念、局部变量的概念、局部变量的举例。

2022-01-06  分类:Python学堂  浏览:423次


Python常用英语及用法

站长在线站长,准备系统的学习Python知识,但是对我来说,英语实在是太差了,当然我知道的是,不仅仅我,很多人在学习Python的时候,也是不知道这些英语单词的意思与用法的,在这里站长在线站长就把这些英语整理出来,把英语以及中文意思、用法一起贴出来,让大家一起来学习。

2022-01-02  分类:Python学堂  浏览:560次


站长在线Python精讲:Python中函数的返回值

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中函数的返回值》。本文的主要内容有:函数的返回值的含义、函数设置返回值的作用、return语句位置与多条 return语句的总结。

2021-12-29  分类:Python学堂  浏览:483次


站长在线零基础Python完全自学教程22:在Python中函数的参数传递

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第22课《在Python中函数的参数传递》。本文是一个大课程分成了下面5节小课程:在Python函数中理解形式参数和实际参数、在Python函数中参数传递的位置参数详解、在Python函数中的关键字参数详解、在Python函数中的默认参数详解、在Python函数中的可变参数详解。

2021-12-26  分类:Python学堂  浏览:457次