字符串
1 字符串的定义
字符串是一种用来表示文本的数据类型,它是由符号或者数值组成的一个连续序列,Python中的字符串是不可变的,字符串一旦创建便不可修改。
Python支持使用单引号、双引号和三引号定义字符串,其中单引号和双引号通常用于定义单行字符串,三引号通常用于定义多行字符串。
1.定义单行字符串
single_symbol = 'hello Python' #使用单引号定义字符串
double symbol = "hello Python" #使用双引号定义字符串
2.定义多行字符串
使用三引号(三个单引号或者三个双引号)定义多行字符串时,字符串中可以包含换行符、制表符或者其他特殊的字符。例如:
three_symbol = """my name is Python
my name is Python"""#使用三引号定义字符串
输出以上使用三引号定义的字符串,输出结果如下:
my name is Python
my name is Python
定义字符串时单引号与双引号可以嵌套使用,需要注意的是,使用双引号表示的字符串中允许嵌套单引号,但不允许包含双引号。例如:
mixture = "Let's go" #单引号双引号混合使用
此外,如果单引号或者双引号中的内容包含换行符,那么字符串会被自动换行。例如:
double_symbol= "hello \nPython"
程序输出结果:
hello
Python
2 字符串的格式化输出
Python的字符串可通过占位符%、format()方法和f-strings三种方式实现格式化输出,下面分别介绍这三种方式。
1.占位符%
利用占位符%对字符串进行格式化时,Python 会使用一个带有格式符的字符串作为模板,这个格式符用于为真实值预留位置,并说明真实值应该呈现的格式。例如:
>>> name= '李强'
>>> '你好,我叫%s' % name
'你好,我叫李强'
一个字符串中同时可以含有多个占位符。例如:
>>> name = '李强,
>>> age = 12
>>> '你好,我叫%s, 今年我%d岁了。' % (name, age)
'你好,我叫李强,今年我12岁了。'
上述代码首先定义了变量name与age,然后使用两个占位符%进行格式化输出,因为需要对两个变量进行格式化输出,所以可以使用“0” 将这两个变量存储起来。
不同的占位符为不同的变量预留位置,常见的占位符如表2-2所示。
表2-2 常见占位符
符号 | 说明 | 符号 | 说明 |
---|---|---|---|
%s | 字符串 | %X | 十六进制整数( A~F为大写) |
%d | 十进制整数 | %e | 指数(底写为e) |
%o | 八进制整数 | %f | 浮点数 |
%x | 十六进制整数(a~f为小写) |
使用占位符%时需要注意变量的类型,若变量类型与占位符不匹配时程序会产生异常。例如:
>>> name = '李强'
>>> age = '12'
>>> '你好, 我叫%s,今年我%d岁了。' % (namen, age)
Traceback (most recent calllast) :
File "<stdin>", line 1, in <module>
TypeError;&d format: a numberis required, not str
以上代码使用占位符%d对字符串变量age进行格式化,由于变量类型与占位符不匹配,因此出现了TypeError 异常。
2.format()方法
format()方法同样可以对字符串进行格式化输出,与占位符%不同的是,使用format(方法不需要关注变量的类型。
format()方法的基本使用格式如下:
<字符串>. format (<参数列表>)
在format()方法中使用“{}" 为变量预留位置。例如:
>>> name = '李强'
>>> age = 12
>>> '你好,我的名字是:{},今年我{}岁了。'.format(name,age)
'你好,我的名字是:李强,今年我12岁了。'
如果字符串中包含多个“{}”,并且“{}”内没有指定任何序号(从0开始编号),那么默认按照“}”出现的顺序分别用format 0方法中的参数进行替换;如果字符串的“{}” 中明确指定了序号,那么按照序号对应的format0方法的参数进行替换。例如:
>>> name= '李强'
>>> age=12
>>> ' 你好,我的名字是:{1},今年我{0}岁了。'. format (age, name)
'你好,我的名字是:李强,今年我12岁了。'
format(方法还可以对数字进行格式化,包括保留n位小数、数字补齐和显示百分比,下面分别进行介绍。
(1)保留n位小数。使用format(方法可以保留浮点数的n位小数,其格式为“(:.nf}”, 其中n表示保留的小数位数。例如,变量pi的值为3.1415,使用format)方法保留2位小数:
>>> pi =3.1415
>>> '{:.2f}'.format(pi)
'3.14'
上述示例代码中,使用format()方法保留变量pi的两位小数,其中“{:.2f}”可以分为“{:}”与“2f”, {:}表示获取变量pi的值,“.2f” 表示保留两位小数。
(2)数字补齐。使用format()方法可以对数字进行补齐,其格式为"{:m>nd}",其中m表示补齐的数字,n表示补齐后数字的长度。例如,某个序列编号从001开始,此种编号可以在1之前使用两个“0”进行补齐:
>>> num=1
>>> '{:0>3d}'.format(num)
'001'
上述示例代码中,使用format()方法对变量num的值进行补,“0”操作,其中"{:0>3d}"的“0”表示要补的数字,“>”表示在原数字左侧进行补充,“3”表示补充后数字的长度。
(3)显示百分比。使用format(方法可以将数字以百位比形式显示,其格式为“{:.n%}”, 其中n表示保留的小数位。例如,变量num的值为0.1,将nimr值保留0位小数并以百分比格式显示:
>>> num=0.1
>>> '{:.0%}'.format(num)
'10%'
上述示例代码中,使用format()方法将变量num的值以百分比形式显示,其中"{:.0%}"的“0”表示保留的小数位。
3.f-strings
f-strings是从Python 3.6 版本开始加入Python标准库的内容,它提供了一种更为简洁的格式化字符串方法。
f-strings在格式上以f或F引领字符串,字符串中使用{}标明被格式化的变量。f-strings本质上不再是字符串常量,而是在运行时运算求值的表达式,所以在效率上优于占位符%和format()方法。
使用f-strings不需要关注变量的类型,但是仍然需要关注变量传人的位置。例如:
>>> address='河北'
>>> f'欢迎来到{address}.'
'欢迎来到河北。'
使用f-strings还可以进行多个变量格式化输出。例如:
>>> name='张天'
>>> age=20
>>> gender='男'
>>> f'我的名字是{name}, 今年{age}岁了,我的性别是{gender}.'
'我的名字是张天,今年20岁了,我的性别是男。'
3 字符串的常见操作
字符串在实际开发中会经常用到,掌握字符串的常用操作有助于提高代码编写效率。下面针对字符串的常见操作进行介绍。
1.字符串拼接
字符串的拼接可以直接使用“+”符号实现。例如:
>>> str_one='人生苦短,'
>>> str_two ='我用Python. '
>>> str_one + str_two
'人生苦短,我用Python. '
2.字符串替换
字符串的replace()方法可使用新的子串替换目标字符串中原有的子串,该方法的语法格式如下:
str.replace(old, new,count= None)
上述语法中,参数old表示原有子串;参数new表示新的子串;参数count用于设置替换次数。
使用replace(方法实现字符串替换。例如:
>>> word = '我是小明,我今年28岁'
>>> word.replace('我','他')
'他是小明,他今年28岁'
>>> word.replace('我','他',1)
'他是小明,我今年28岁'
如果在字符串中没有找到匹配的子串,会直接返回原学符串。例如:
>>> word= '我是小明,我今年28岁'
>>> word.replace('他','我')
'我是小明,我今年28岁'
3.字符串分割
字符串的split()方法可以使用分隔符把字符串分割成序列,该方法的语法格式如下:
str.split(sep=None, maxsplit=-1)
在上述语法中,sep()分隔符义默认为空字符,包括空格、换行(\n)、制表符(\t)等。如果maxsplit有指定值,则split0方法将字符串str 分割为maxsplit个子串,并返回一个分割以后的字符串列表。
使用split()方法实现字符串分割。例如:
>>> word="12345"
>>> word.split ()
['1', '2', '3', '4', '5']
>>> word = "a,b,c,d,e"
>>> word.split(",")
['a', 'b', 'c', 'd', 'e']
>>> word.split(",",3)
['a', 'b', 'c', 'd', 'e'l
4.去除字符串两侧空格
字符串对象的strip0方法一般用于去除字符串两侧的空格,该方法的语法格式如下:
str.strip(chars = None)
strip()方法的参数chars用于设置要去除的字符,默认要去除的字符为空格。例如:
>>> word ="Strip"
>>> word.strip()
'Strip'
还可以指定要去除的字符为其他字符,例如去除字符串两侧的“*”。 代码如下:
>>> word = "**Strip**"
>>> word.strip("*")
'Strip'
4 字符串的索引与切片
在程序的开发过程中,可能需要对一组字符串中的某些字符进行特定的操作,Python 中通过字符串的索引与切片功能可以提取字符串中的特定字符或子串,下面分别对字符串的索引和切片进行讲解。
1.索引
字符串是一个由元素组成的序列,每个元素所处的位置是固定的,并且对应着一个位置编号,编号从0开始,依次递增1,这个位置编号被称为索引或者下标。
下面通过一张示意图来描述字符串的索引,如图2-1所示。
图2-1 字符串的索引 (正向)
图2-1中所示的索引自0开始从左至右依次递增,这样的索引称为正向索引;如果索引自-1开始,从右至左依次递减,则索引为反向索引。反向索引的示意图如图2-2所示。
图2-2 字符串的索引(反向)
通过索引可以获取指定位置的字符,语法格式如下:
字符串[索引]
假设变量str_python的值为“python”,使用正向索引和反向索引获取该变量中的字符“p”。例如:
str_python[0] #利用正向索引获取字符P
str_python[-6] #利用反向索引获取字符p
需要注意的是,当使用索引访问字符串值时,索引的范围不能越界,否则程序会报索引越界的异常。
2.切片
切片用于截取目标对象中一部分,其语法格式如下:
[起始:结束:步长]
切片的默认步长为1。 需要注意的是,切片选取的区间属于左闭右开型,切下的子串包含起始位,但不包含结束位。例如:
string[0:4:2] #在索引为0处开始,在索引为4处结束,步长为2,结果为'pt'
'pt'
在使用切片时,步长的值不仅可以设置为正整数,还可以设置为负整数。例如:
>>> string ='python'
>>> string[0:4:2]
'pt '
超全面的测试IT技术课程,0元立即加入学习!有需要的朋友戳:
腾讯课堂测试技术学习地址
欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。