Python巩固基础02-基本数据类型之String字符串类型详解
Python访问字符串
1、使用索引的方法访问字符串中的某一字符:
>>> a = 'hello world'
>>> a[3]
'l'
2、使用切片方法访问字符串中的子字符串:
>>> a = 'hello world'
>>> a[:4]
'hell'
>>> a[:4] = 'aaa'
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'str' object does not support item assignment
注意:字符串是不可变数据类型,所以不允许通过切片赋值的方法修改其值
Python拼接字符串
常用的拼接字符串的方法如下
1、%
占位符拼接
>>> print('%s的长度为%d' % ('hello', 5))
hello的长度为5
>>> print('%s %s' % ('hello', 'mike'))
hello mike
此方式不仅可以在字符串间进行拼接,还可以将字符串和其他整数、浮点数等进行拼接,其中%s表示字符串、%d表示整数、%f表示浮点数;
正因为对不同类型的写法不同,所以使用时也有些麻烦。
2、format
占位符拼接
>>> print('{} is a {}'.format('dog', 'animal')) # {}为占位符,分别对应后面实际的值
dog is a animal
>>> print('{1} have a {0} time {2}'.format('good', 'mary', 'today')) # 在{}中添加序号,序号为n则对应后面第n个值(n从0开始)
mary have a good time today
>>> print('{name} have a {emotion} time today'.format(name='mary', emotion='good')) # key-value方式,{}中填入key值,format中使用key-value方式
mary have a good time today
3、+
操作符拼接
>>> a = 'hello'
>>> b = ' world'
>>> a + b
'hello world'
4、*
操作符拼接
此方法实际上为字符串的重复拼接
>>> a = 'hello'
>>> a * 3
'hellohellohello'
5、f-string
拼接
f-string
拼接的方法即在字符串前加个f,然后需要拼接的变量、表达式用{}括起来,它会将变量直接替换,若是表达式则直接计算出表达式的结果(表达式后可加=号,加上后,拼接完成的字符串会打印在等号后).
>>> name = 'mike'
>>> city = 'beijing'
>>> s = f'我叫{name}, 住在{city}'
>>> s
'我叫mike, 住在beijing'
>>> a = f'{1+1=}'
>>> a
'1+1=2'
>>> a = f'{1+1}'
>>> a
'2'
>>> b = f'{"hello" + "world" = }'
>>> b
'"hello" + "world" = \'helloworld\''
6、join()
拼接
join()
主要用于将一个字符串序列 使用间隔符拼接成字符串。
>>> a = ['this', 'is', 'never']
>>> r = '-'.join(a)
>>> r
'this-is-never'
Python拆分字符串
使用split()
方法将字符串拆分成列表,常和join()
搭配使用。
# s.split(x, y),x为分隔符,非必传,默认为所有的空字符(空格、\n、\t等),y为拆分次数,默认全拆。
>>> s = 'today is a \ngood \tday'
>>> print(s)
today is a
good day
>>> s.split()
['today', 'is', 'a', 'good', 'day']
>>> s.split(' ') # 分隔符为空格
['today', 'is', 'a', '\ngood', '\tday']
>>> s.split('o')
['t', 'day is a \ng', '', 'd \tday']
>>> s.split(' ', 2)
['today', 'is', 'a \ngood \tday']
>>> s # 字符串是不可变类型,再怎么拆分也是生成了一个新的字符串,原字符串不会被改变
'today is a \ngood \tday'
Python替换字符串
替换场景:大小写替换、特定符号替换、子字符串替换等(图片来源:豌豆花下猫),因字符串是不可变类型,所以无论怎么替换都是生成的一个新的字符串,原字符串不变。
>>> s = 'this is A good Day'
>>> s.capitalize() # 将首个单词的首字母变成大写,其余的变成小写
'This is a good day'
>>> s.title() # 将所有单词的首字母都变为大写
'This Is A Good Day'
>>> s.upper() # 将所有小写字母变为大写
'THIS IS A GOOD DAY'
>>> s.lower() # 将所有大写字母变为小写
'this is a good day'
>>> s.swapcase() # 将大写的字母变为小写,小写的字母变为大写
'THIS IS a GOOD dAY'
>>> s.replace(' is', ' is not') # s.replace(old, new, n),将old字符串替换为new,替换n次,n不写则默认全部替换
'this is not A good Day'
>>> s.replace('is', 'at', 1)
'that is A good Day'
>>> s.replace('is', 'is not')
'this not is not A good Day'
>>> a = ' this is never hat ***'
>>> a.lstrip() # 去掉字符串左边的空格或指定字符
'this is never hat ***'
>>> a = ' this is never hat *** '
>>> a.rstrip() # 去掉字符串右边的空格或指定字符
' this is never hat ***'
>>> a
' this is never hat *** '
>>> a.strip() # 去掉字符串首尾(左右两边)的空格或指定字符
'this is never hat ***'
>>> a = '*** this is never ***'
>>> a.strip('*')
' this is never '
Python查找字符串
>>> s = 'this is never'
>>> s.find('is')
2
>>> s.index('is')
2
>>> s.find('at') # 找不到时返回-1
-1
>>> s.index('at') # 找不到时报错
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: substring not found
Python字符串中的字符判断
图片来源:豌豆花下猫
>>> '666'.isalnum() # 所有字符都是字母或者数字
True
>>> 'wahaha'.isalnum()
True
>>> 'test'.isalpha() # 是否所有字符都是字母 =='test'.isalnum()
True
# 注意,更正isalpha()方法的含义:如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False
>>> '你好'.isalpha()
True
>>> '666'.isdigit() # 是否所有字符都是数字 =='666'.isalnum()
True
>>> 'this is 123'.islower() # 是否所有字母都是小写
True
>>> 'THIS IS 123'.isupper() # 是否所有字母都是大写
False
>>> 'This Is'.istitle() # 是否所有单词的首字母都是大写
True
>>> ' '.isspace() # 是否所有字符都是空白字符,包括 \n、\t等
True
>>> 'this is'.startswith('th') # 是否以指定字符串开头
True
>>> 'this is'.endswith('is') # 是否以指定字符串结尾
True
注意:s.isdigit、isdecimal 和 s.isnumeric 区别
isdigit()
True: Unicode数字,byte数字(单字节),全角数字(双字节)
False: 汉字数字,罗马数字,小数
Error: 无
isdecimal()
True: Unicode数字,,全角数字(双字节)
False: 罗马数字,汉字数字,小数
Error: byte数字(单字节)
isnumeric()
True: Unicode 数字,全角数字(双字节),汉字数字
False: 小数,罗马数字
Error: byte数字(单字节)
其他Python字符串内建函数
ljust()方法
语法:str.ljust(width, [char])
- width:必需参数,指定新字符串的长度
- char:非必需参数,默认为空格,可指定其他长度为1的字符
返回值:返回一个在原字符串的基础上,左对齐并且使用指定字符填充补齐剩余长度的新字符串,若width小于原字符串长度,则返回原字符串
>>> s = 'this'
>>> s.ljust(6)
'this '
>>> s.ljust(6, '3')
'this33'
>>> s.ljust(2)
'this'
rjust()方法
语法:str.rjust(width, [char])
- width:必需参数,指定新字符串的长度
- char:非必需参数,默认为空格,可指定其他长度为1的字符
返回值:返回一个在原字符串的基础上,右对齐并且使用指定字符填充补齐剩余长度的新字符串,若width小于原字符串长度,则返回原字符串
>>> s
'this'
>>> s.rjust(6)
' this'
>>> s.rjust(6, 'w')
'wwthis'
>>> s.rjust(3)
'this'
参考文档:
菜鸟教程https://www.runoob.com/python3/python3-string.html
豌豆花下猫https://www.yuque.com/wandouhuaxiamao/pythoncat/iqo6uy#a706e341