String

发布于 2022-03-28  129 次阅读


Python的基本数据类型,是一个不可变的字符序列。

字符串的驻留机制

仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串的驻
留池中,Python的驻留机制对相同的字符串只保留一份拷贝,后续创建
相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的
变量。

字符串的常用操作

1.大小写转换
返回新的字符串,原串不改变

s = 'abCDefG'

#upper() 转换为大写
a = s.upper()
# a = 'ABCDEFG'

#lower() 转换为小写
a = s.lower()
# a = 'abcdefg'

#swapcase() 大转小,小转大
a = s.swapcase()
# a = 'ABcdEFg'

s = 'hello,python'
#capitalize() 首字母大写,其余小写
a = s.capitalize()
# a = 'Hello,python'

#title() 每个单词首字母大写,其余小写
a = s.title()
# a = 'Hello,Python'

2.字符串内容对齐
center()
居中对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数默认是空格,如果设置宽度小于实际宽度则则返回原字符串。

s = 'abc'
a = s.center(5,'*')
#a = '*abc*'
a = s.center(2,'*')
#a = 'abc'

ljust()
左对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数默认是空格,如果设置宽度小于实际宽度则则返回原字符串。

s = 'abc'
a = s.ljust(5,'*')
#a = 'abc**'
a = s.ljust(2,'*')
#a = 'abc'

rjust()
右对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数默认是空格,如果设置宽度小于实际宽度则则返回原字符串。

s = 'abc'
a = s.rjust(5,'*')
#a = '**abc'
a = s.rjust(2,'*')
#a = 'abc'

zfill()
右对齐,左边用0填充,该方法只接收一个参数,用于指定字符串的宽度,如果指定的宽度小于等于字符串的长度,返回字符串本身。

s = 'abc'
a = s.zfill(5)
#a = '00abc'
a = s.rjust(2)
#a = 'abc'

3.字符串分割
split(sep, maxsplit)
从字符串的左边开始分割,默认的分割字符是空格字符,返回值都是一个列表。
以通过参数sep指定分割字符串是的分割符。
通过多数maxsplit指定分割字符串时的最大分割次数,在经过最大次纷纷之后,剩余的子串会单独做为一部分。

s = 'a b c'
lst = s.split()
#list = ['a', 'b', 'c']
s = 'a|b|c'
lst = s.split('|')
#list = ['a', 'b', 'c']
s = 'a|b|c'
lst = s.split('|', 1)
#list = ['a', 'b|c']

rplit(sep, maxsplit)
从字符串的右边开始分割,默认的分割字符是空格字符,返回值都是一个列表。
以通过参数sep指定分割字符串是的分割符。
通过多数maxsplit指定分割字符串时的最大分割次数,在经过最大次纷纷之后,剩余的子串会单独做为一部分。

s = 'a b c'
lst = s.rplit()
#list = ['a', 'b', 'c']
s = 'a|b|c'
lst = s.rplit('|')
#list = ['a', 'b', 'c']
s = 'a|b|c'
lst = s.rplit('|', 1)
#list = ['a|b', 'c']

4.字符串判断
isidentifier()
判断指定的字符串是不是合法的标识符(仅含字母、数字、下划线)。
isspace()
判断指定的字符串是否全部由空白字符组成(回车、换行,水平制表符)。
isalpha()
判断指定的字符串是否全部由字母组成。
isdecimal()
判断指定字符串是否全部由十进制的数字(0~9)组成。
isnumeric()判断指定的字符串是否全部由数字(阿拉伯数字,汉子数字,罗马数字)组成。
isalnum()
判断指定字符串是否全部由字母和数字组成。

5.替换与合并
replace(s1,s2,num)
将字符串中的子串s1替换为s2,最多替换num次

s = 'ababa'
a = s.replace('a','c')
#a = 'cbcbc'
a = s.replace('a','c',2)
#a = 'cbcba'

join()
将元组或列表中的字符串合并成一个字符串

lst = ['hello','python','hahaha']
a = ','.join(lst)
#a = 'hello,python,hahaha'

t = ('hello','python','hahaha')
b = '*'.join(lst)
#b = 'hello*python*hahaha'

字符串的比较

== 比较的是值value
is 比较的是id

字符串的切片操作

字符串是不可变对象,不具备增删改操作,切片产生新的字符串对象。
其余与列表切片相似
python容器

格式化字符串

格式化字符串的两种方式

1.%做占位符(与C语言相似)

a = '我是%s,今年%d岁' % (Alice, 20)
# a = '我是Alice,今年20岁'

a = '%3f' % (3.14159)
# a = 3.141
#与 C 类似,略

2.{}做占位符

a = '我是{0},今年{1}岁,我的爸爸也是{0}'.format('男生', 6)
# a = '我是男生,今年6岁,我的爸爸也是男生'

a = {0: .3}.format(11.11111)
#a = '11.1' 三位
a = {0: .3f}.format(11.11111)
#a = '11.111' 三位小数

字符串的编码转换

1.编码:将字符串转换为二进制数据(bytes)

str.encode(encoding)
str为字符串对象
encoding为编码格式:GDK,UTF-8等

解码:将bytes类型的数据转换为字符串类型
byte.decode(encoding)
byte为byte对象(二进制)
encoding为与编码格式相同,编码格式GDK,解码也用GDK。