Python第八节课 字符串 字符串用单、双、三引号定义的数据类型,是一种不可变序列; 有驻留机制,所以不会开辟新空间,例如:a=‘Python’ b=‘Python’ id(a)==id(b) (现在的编程软件对驻留进行了优化,所以再考虑驻留意义不是很大,所以就省略了)
一)函数操作 1)字符串查询 index() —— 查询要查找的字符第一次出现的位置,不存在就报错 rindex() —— 查询要查找的字符最后一次出现的位置,不存在就报错 find() —— 查询要查找的字符第一次出现的位置,不存在返回数值-1 rfind() —— 查询要查找的字符最后一次出现的位置,不存在就报错
2)大小写转换 upper() —— 将字符串全转换为大写 lower() —— 将字符串全转换为小写 swapcase() —— 将字符串大写换位小写,小写换为大写 capitalize() —— 将字符串第一个字母大写,其他均小写(文章正文) title() —— 将字符串每个单词首字母大写,其他小写(标题)
3)内容对齐 含两个参数,一般a为宽度,整个字符串要求多宽,当小于字符串长度时,返还完整字符串,参数b为填充符号,默认为空格。 center(a,b) —— 居中对齐 ljust(a,b) —— 左对齐 rjust(a,b) —— 右对齐
含一个参数a,即为宽度,同上;默认左侧用0补齐 zfill(a) —— 右对齐
4)劈分 split() —— 从左侧劈分,默认空格处劈分,也可以设定劈分符号和分割次数,返回值为列表。 rsplit() —— 从右侧劈分,同上。 例:
a='Hello&word&and&python'
c=a.split(sep='&')
d=a.split(sep='&',maxsplit=2)
print(c)
print(d)
结果如下:
['Hello', 'word', 'and', 'python']
['Hello', 'word', 'and&python']
5)判断字符串方法
a='Hello&word&and&python'
b1=a.isidentifier()
b2=a.isspace()
b3=a.isalpha()
b4=a.isdecimal()
b5=a.isnumeric()
b6=a.isalnum()
b1为判断字符串是否为合法标识符(由数字、字母和下划线组成) b2为判断字符串是否由空白字符组成(空格、回车、水平制表符) b3为判断字符串是否由字母组成 b4为判断字符串是否由十进制数字组成 b5为判断字符串是否由数字组成(罗马数字、汉字数字也算) b6为判断字符串是否由字母和数字组成(汉字也算)
6)替换和合并
二)对比&格式化 1)字符串比较 字符串之间是可以进行对比的,用<,>,<=,>=,= =,!= 一位一位的对比,相同则进行下一位对比,若出现一长一短,则比较到短的结束,例如:“app”= =“apple”。
2)切片 [ start : stop : step ],基本用法和之前提到的相同。
3)格式化 即可以将内容放到字符串中占位符的位置。 占位符: %d —— 整数型(可以规定保留的位数) %f —— 浮点型(可以规定保留的位数和小数点后几位) %s —— 字符串 其中格式化有两种方式,一种为%形式,一种为format形式 具体例子如下:
a='我叫 %s ,今年 %d 岁'
b='我叫 {0} ,今年 {1} 岁'
c=3.1415926
print(a % ('小强',15))
print(b.format('小强',16))
print('%10d' % 25)
print('%10.3f' % c)
print('{0:10.3}'.format(c))//10为宽度10位,3为一共保留三位,若在3后加f,则表示小数点后三位
结果为:
我叫 小强 ,今年 15 岁
我叫 小强 ,今年 16 岁
25
3.142
3.14
4)编码和解码 编码:将字符串转换为二进制数据类型(bytes) 解码:将bytes数据类型转换为字符串 程序如下:
a='你是谁'
b1=a.encode(encoding='GBK')
print(b1)
b2=a.encode(encoding='UTF-8')
print(b2)
c1=b1.decode(encoding='GBK')
print(c1)
c2=b2.decode(encoding='UTF-8')
print(c2)
结果为:
b'\xc4\xe3\xca\xc7\xcb\xad'
b'\xe4\xbd\xa0\xe6\x98\xaf\xe8\xb0\x81'
你是谁
你是谁
在GBK格式中,一个中文占用两个字节 在UTF-8格式中,一个中文占用三个字节
解码和编码格式必须相同,均为 GBK 或者均为 UTF-8 ,否则会报错。
|