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

posted @ 2022-02-17 15:47  hook_what  阅读(67)  评论(0编辑  收藏  举报