Python基础学习之字符串操作
文章目录
- Python基础学习之字符串操作
- 1. 字符串的切片 []
- 2. 字符串的统计值 len(), count()
- 3. 查找字符串 find(),index()
- 4. 字符串的替换 replace()
- 5. 连接字符串 + & join()
- 6. 分割字符串 split(),splitlines(),partition()
- 7. 包含运算 in & not in
- 8. 字符串大小写转换 upper(),lower(),title(),capitalize()
- 9. 字符串的判断 islower(),endswith()等
- 10. 字符串与列表之间的转换 split(), join()
- 11. 字符串的对齐与居中 center(),ljust(),rjust()
- 12. 字符串的运算符 +,*,==,!=,<,>,=
- 13. 字符与编码的转换 ord(),chr(),encode(),decode()
- 14. 两种字符串占位符 (% & format{})
字符串是编程中最常遇到的类型,所以掌握好字符串的常用操作方法,非常的必要!
1. 字符串的切片 []
字符串的切片是最常见的字符串操作,必须要掌握;
#切片语法
str_1='123456789'
print(str_1[1:5]) # 输出为:2345
print(str_1[::]) #全部元素,输出为:123456789
print(str_1[1:8:2]) #输出为:2468
print(str_1[::-1]) #可以实现倒序,输出为:987654321
print(str_1[-5:-2]) #输出为:567
2. 字符串的统计值 len(), count()
- len() 统计字符串的长度
str_1='123456789'
# 获取长度
len(str_1) #结果输出为:9
- count() 统计指定字符的个数
a='hello world'
print(a.count('l')) # 输出结果为:3
3. 查找字符串 find(),index()
查找字符串的方法有:index(), find(), rfind(), lfind();
index() 与 find() 的功能相同,不同点为:find()查找失败会返回-1,不会影响程序运行。一般用返回值来做判断,例如:find!=-1或者find>-1来作为判断条件。
#查找字符串
print('hello'.index('l')) # 输出2
print('hello'.find('l')) # 输出2
print('hello'.rfind('l')) # 输出3
print('hello'.rfind('a')) # 输出 -1
print('hello'.rfind('llo')) # 输出2
4. 字符串的替换 replace()
print('hello word'.replace('word', 'world')) #输出 hello world
5. 连接字符串 + & join()
- 加好运算符可以连接字符串,但是 + 号运算符,比较浪费内存;
a='I have an apple!'
b='I have a pen!'
c=a+b
print(c)
- 将列表连接成字符串;
list1=['monday','tuesday','wednesday','thursday']
print('++'.join(list1)) #输出:monday++tuesday++wednesday++thursday
6. 分割字符串 split(),splitlines(),partition()
- split() 按照指定的字符进行分割;
'hello world'.split(' ') #输出:['hello', 'world']
'hello world'.split('w') #输出:['hello ', 'orld']
- partition() 按照指定的字符进行分割,分割后返回值为元组;
s="我是祖国的花朵!"
res = s.partition('祖国')
print(res) # 输出元组:('我是', '祖国', '的花朵!')
- splitlines() 按照行分隔符进行分割,返回值为列表;
st='''我是祖国的花朵,
我也是接班人;
'''
b=st.splitlines()
print(b) # 输出结果为:['我是祖国的花朵,', '我也是接班人;']
7. 包含运算 in & not in
a='hello world'
print('hello' in a) # 输出:True
print('hello' not in a) #输出:False
8. 字符串大小写转换 upper(),lower(),title(),capitalize()
'hello world'.capitalize() # 第一个单词首字母大写,输出:'Hello world'
'hello world'.upper() #全部大写,输出:'HELLO WORLD'
'HELLO world'.lower() # 全部小写,输出:'hello world'
'hello world'.title() #每个单词的首字母大写,输出:'Hello World'
9. 字符串的判断 islower(),endswith()等
'hello world'.startswith('e') # 输出: False
'hello world'.endswith('d') # 输出: True
'a'.isalpha() # 输出: False
'23'.isdigit() # 输出: True
'23'.isalnum() # 输出: True
'hello world'.isspace() # 输出: False
'hello world'.islower() # 字母是否全是小写
'hello world'.isupper() # 字母是否是大写
'hello world'.istitle() # 首字母是否大写
10. 字符串与列表之间的转换 split(), join()
- 字符串转化为列表;实际上就是字符串的分割; split()
'hello world'.split(' ') #输出:['hello', 'world']
'hello world'.split('w') #输出:['hello ', 'orld']
- 列表转化成字符串;实际上是字符串的合并;
a=['monday','tuesday','wednesday','thursday']
print('++'.join(a)) #输出:monday++tuesday++wednesday++thursday
11. 字符串的对齐与居中 center(),ljust(),rjust()
# 对齐 三种剧中方式的参数均为:(width,fillchar)
str_1.ljust(10) # 让字符串以制定长度显示,不足则以空格补齐;
str_1.rjust(10,'#') ## 让字符串以制定长度显示,右对齐
str_1.center(20,'#') #让字符串以制定长度显示,居中
12. 字符串的运算符 +,*,==,!=,<,>,=
- 加法运算,合并字符串;
- 乘法运算,自定字符串重复多次
- == 运算,返回布尔类型
- != 运算
- 比较运算(<,>,=),比较字符串的编码值,返回布尔类型;
13. 字符与编码的转换 ord(),chr(),encode(),decode()
# 字符与编码的转换
ord('这') #获得字符的编码值
chr(12456) #获得编码的字符
# GBK,UTF-8编码
print('你'.encode('GBK')) #十六进制:b'\xc4\xe3' 十进制:50403 二进制:11000100 11100011,一个字符占两个字节
print(b'\xc4\xe3'.decode('GBK')) # 输出:你!
# UTF-8编码
print('你'.encode('utf8')) #十六进制:b'\xe4\xbd\xa0' 十进制:14990752 二进制:11100100 10111101 10100000,一个字符占三个字节
print(b'\xe4\xbd\xa0'.decode('utf8')) # 输出:你!
14. 两种字符串占位符 (% & format{})
- %占位符
# %占位符
print('大家好,我是%s,我今天挣了%d块钱!' %('张凯',5))
# 输出:大家好,我是张凯,我今天挣了5块钱!
print('大家好,我是%s,我今天挣了%4d块钱!' %('张凯',5))
# 输出:大家好,我是张凯,我今天挣了 5块钱!
print('大家好,我是%s,我今天挣了%-4d块钱!' %('张凯',5))
# 输出:大家好,我是张凯,我今天挣了5 块钱!
print('大家好,我是%s,我今天挣了%04d块钱!' %('张凯',5))
# 输出:大家好,我是张凯,我今天挣了0005块钱!
print('大家好,我是%s,我今天挣了%.2f块钱!' %('张凯',5.2548)) #四舍五入保留两位小数
# 输出:大家好,我是张凯,我今天挣了5.25块钱!
print('大家好,我是%s,我今天挣了%x块钱!' %('张凯',10))
# 输出:大家好,我是张凯,我今天挣了a块钱!
print('大家好,我是%s,我今天挣了%X块钱!' %('张凯',10))
# 输出:大家好,我是张凯,我今天挣了A块钱!
- format 占位符
# format 占位符
# {}内什么都不填,按顺序进行;
x='大家好,我是{},我今天赚了{}块钱'.format('张凯',19)
print(x)
# 输出:大家好,我是张凯,我今天赚了19块钱
# {}内填写数字,可控制顺序;
x='大家好,我是{1},我今天赚了{0}块钱'.format('张凯',19)
print(x)
# 输出:大家好,我是19,我今天赚了张凯块钱
# {}内填写变量;
x='大家好,我是{name},我今天赚了{money}块钱'.format(name='张凯',money=19)
print(x)
# 输出:大家好,我是张凯,我今天赚了19块钱
# *可以将list 拆包
list_for=['张凯',19]
x='大家好,我是{},我今天赚了{}块钱'.format(*list_for)
print(x)
# 输出:大家好,我是张凯,我今天赚了19块钱
# *可以将dict 按key value 匹配拆包
dic_for={'name':'张凯','money':19}
x='大家好,我是{name},我今天赚了{money}块钱'.format(**dic_for)
print(x) # 输出:大家好,我是张凯,我今天赚了19块钱