Python字符串相关方法
文章目录
- 1. 字符串相关方法
- 2. 字符串格式化
-
- 2.1 字符串拼接
- 2.2 格式字符串
- 2.3 f-string
-
- 练习题
1. 字符串相关方法
字符串.xxx()
- 字符串.join(序列)
将序列中的元素用指定字符串拼接在一起,形成一个新的字符串(序列中的元素必须是字符串)
list = ['后裔', '王昭君', '鲁班', '孙悟空']
result = ''.join(list)
print(result)
result = '+'.join(list)
print(result)
# 后裔王昭君鲁班孙悟空
后裔+王昭君+鲁班+孙悟空
# 如果需要join的序列不是字符串,把元素变成字符串再join
num = [23, 46, 223, 46, ]
result = ''.join([str(i) for i in num])
print(result)
# 234622346
result = '*'.join('abc')
print(result)
# a*b*c
- 字符串1.split(字符串2)
将字符串1中所有字符串2作为切割点对字符串进行切割,返回的是列表,每一小段对应的是字符串的列表。
字符串1.split(字符串2,N)
str1='sdfmnhjn3mn45fgh'
result=str1.split('mn')
print(result)
# 返回的是列表
# ['sdf', 'hjn3', '45fgh']
str1='mnsdf97mnmn90jn3mn45fghmn'
result=str1.split('mn')
print(result)
# 连续切割 产生空串
# ['', 'sdf97', '', '90jn3', '45fgh', '']
str1 = 'mnsdf97mnmn90jn3mn45fghmn'
result = str1.split('mn', 2)
# 前两个作为切割点,只切两次
print(result)
# ['', 'sdf97', 'mn90jn3mn45fghmn']
- 字符串1.replace(字符串2,字符串3)
将字符串1中所有的字符串2都替换成字符串3
字符串1.replace(字符串2,字符串3,N)
将字符串1中前N个字符串2都替换成字符串3
str1 = 'mnsdf97mnmn90jn3mn45fghmn'
result = str1.replace('mn','A')
print(result)
# Asdf97AA90jn3A45fghA
# 删除字符串2
result = str1.replace('mn','')
print(result)
# sdf9790jn345fgh
# 替换前两个字符串2
str1 = 'mnsdf97mnmn90jn3mn45fghmn'
result = str1.replace('mn','AB',2)
print(result)
# ABsdf97ABmn90jn3mn45fghmn
- 字符串.strip() 删除字符串最前面左右两端的空白字符
字符串.rstrip()
字符串.lstrip()
# 删除无效空白
str1 = ' 小 明 '
result = str1.strip( )
print(result)
#小 明#
- find index
字符串1.find(字符串2)
获取字符串1中字符串2第一次出现的位置,如果字符串不存在返回-1
字符串1.index(字符串2)
获取字符串1中字符串2第一次出现的位置,如果字符串不存在报错
字符串1.find(字符串2,开始下标,结束下标)
获取字符串1中指定范围内字符串2第一次出现的位置
str1 = 'how are you? you'
print(str1.find('you'))
print(str1.index('you'))
# 8
8
rfind reindex
#从后面开始找you
str1 = 'how are you? you'
print(str1.rfind('you'))
print(str1.rindex('you'))
# 13
- 其他方法
1)把大写字母变成小写字母
print('fgfd234KDD'.casefold())
# fgfd234kdd
2) center、rjust、ljust、zfill
str1 = 'abc'
print(str1.center(7, '+'))
print(str1.rjust(7, '+'))
print(str1.ljust(7, '+'))
print(str1.zfill(7))
# ++abc++
++++abc
abc++++
0000abc
3) 统计字符串中字符出现的次数
str1 = 'mnsdf97mnmn90jn3mn45fghmn'
print(str1.count('m'))
# 5
4). 判断岂是结尾字符
str1 = 'mnsdf97mnmn90jn3mn45fghmn'
print(str1.endswith('n'))
# True
print(str1.startswith('m'))
# True
5)
name = '小明'
age = 18
# xxx今年xx岁
result=f'{name}今年{age}岁'
print(result)
6)判断纯数字
print('2323'.isdecimal()) # True
print('232a3'.isdecimal()) # False
print('23239一'.isdecimal()) # False
print('23211'.isdigit()) # True
print('232+11'.isdigit()) # False
print('2323一'.isdigit()) # False
print('2323'.isnumeric()) # True
print('232a3'.isnumeric()) # False
print('2323一十百万Ⅱ拾Ⅲ'.isnumeric()) # True
判断大小写
print('sss'.islower())
# True
print('JJHG'.isupper())
# False
大小写转换
print('JJHG'.lower())
# jjhg
print('hjk'.upper())
# HJK
str1 = '722实ss际上Mn飞机22-2233=+集H合289'
for x in str1:
# '0' <= x <= '9' or 'a' <= x <= 'z' or 'A' <= x <= 'Z'
if x.isdigit() or x.isupper() or x.islower():
print(x)
7)maketrans、translate
创建映射表,根据映射表的对应关系,数字转换成中文
str='12345678'
# 对应关系表
table=str.maketrans('1234567890','一二三四五六七八九零')
result=str.translate(table)
print(result)
str='星期1,星期7'
# 对应关系表
table=str.maketrans('1234567890','一二三四五六天八九零')
result=str.translate(table)
print(result)
# 星期一,星期天
- find index
字符串1.find(字符串2)
获取字符串1中字符串2第一次出现的位置,如果字符串不存在返回-1
字符串1.index(字符串2)
获取字符串1中字符串2第一次出现的位置,如果字符串不存在报错
字符串1.find(字符串2,开始下标,结束下标)
获取字符串1中指定范围内字符串2第一次出现的位置
str1 = 'how are you? you'
print(str1.find('you'))
print(str1.index('you'))
# 8
8
rfind reindex
从后面开始找you
str1 = 'how are you? you'
print(str1.rfind('you'))
print(str1.rindex('you'))
# 13
2. 字符串格式化
2.1 字符串拼接
name = input('请输入姓名:')
age = int(input('请输入年龄:'))
message = name + '今年' + str(age) + '岁'
print(message)
xx今年xx岁
2.2 格式字符串
语法:包含一个或多个格式占位符的字符串%(数据1,数据2,数据3)
说明:()中的数据必须和前面字符串中的占位符一一对应,如果需要一个占位符,()可省略。
占位符:%s 可以给任何类型的数据占位(字符串占位符)
%d 只能给数字数据占位(整数占位符)
%f 只能给数字数据占位(浮点数,默认保留6位)
%.Nf 只能给数字数据占位(保留N位小数)
name = '小明'
age = 32
money = 15000
message = '%s今年%d岁,月薪:%f元'%(name,age,money)
print(message)
2.3 f-string
name='小明'
money=1500
age=18
str=f'姓名:{name}'
print(str)
# 姓名:小明
message=f'{name}今年{age}岁'
print(message)
# 小明今年32岁
f-string的参数:{提供数据的表达式:参数}
a.控制小数位数:{提供数据的表达式:.Nf}
#保留两位小数
money=34567
result=f'余额:{money:.2f}'
print(result)
# 34567.00
#删小数后
money=34567.34
result=f'余额:{money:.0f}'
print(result)
# 34567
b.大金额逗号分隔
money=345677898
result=f'金额:{money:,}'
print(result)
# 金额:345,677,8983
c.小数显示成百分比 {提供数据的表达式:.N%}
scale = 0.65
result = f'及格率:{scale:.1%}'
print(result)
# 65.0%
d.控制填充长度(实现center rjust ljust zfiil)的功能
{提供数据的表达式:字符>长度}
num=3
# 0填充字符 3控制内容的部分 >把不够的填在前面
study_id=f'{num:x>4}'
print(study_id)
# xxx3
num=3
study_id=f'{num:x<5}'
print(study_id)
# 3xxxx
num=3
study_id=f'{num:x^5}'
print(study_id)
# xx3xx
练习题
编写一个程序,交换指定字典的key和value。
例如:dict1={'a':1, 'b':2, 'c':3} --> dict1={1:'a', 2:'b', 3:'c'}
dict1 = {'a': 1, 'b': 2, 'c': 3}
dict2 = {}
for key, value in dict1.items():
key, value = value, key
dict2.setdefault(key, value)
print(dict2)
编写一个程序,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串
例如: 传入'12a&bc12d-+' --> 'abcd'
str1='12a&bc12d-+'
str2=''
for i in str1:
if 'a'<=i<='z':
str2+=i
print(str2)
写一个自己的capitalize函数,能够将指定字符串的首字母变成大写字母
例如: 'abc' -> 'Abc' '12asd' --> '12Asd'
str1 = 'abc'
str2 = ''
if 'a'<=str1[0]<='z':
str2+=chr(ord(str1[0])-32)
else:
str2+=str1[0]+str2
print(str2+str1[1:])
写程序实现endswith的功能,判断一个字符串是否已指定的字符串结束
例如: 字符串1:'abc231ab' 字符串2:'ab' 函数结果为: True
字符串1:'abc231ab' 字符串2:'ab1' 函数结果为: False
str1 = 'abcfdfbc'
str2 = 'bc'
print(str1[-len(str2)::]==str2)
写程序实现isdigit的功能,判断一个字符串是否是纯数字字符串
例如: '1234921' 结果: True
'23函数' 结果: False
'a2390' 结果: False
str1 = '1234921'
for i in str1:
if not'0'<=i<='9':
print('False')
break
else:
print('True')
写程序实现upper的功能,将一个字符串中所有的小写字母变成大写字母
例如: 'abH23好rp1' 结果: 'ABH23好RP1'
str1='abH23好rp1'
str2=''
for i in str1:
if 'a'<=i<='z':
str2+=chr(ord(i)-32)
else:
str2+=i
print(str2)
写程序获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值
例如: 序列:[-7, -12, -1, -9] 结果: -1
序列:'abcdpzasdz' 结果: 'z'
序列:{'小明':90, '张三': 76, '路飞':30, '小花': 98} 结果: 98
写程序实现replace函数的功能,将指定字符串中指定的旧字符串转换成指定的新字符串
例如: 原字符串: 'how are you? and you?' 旧字符串: 'you' 新字符串:'me' 结果: 'how are me? and me?'
str1= 'how are you? and you?'
str2= 'you'
str3='me'
result=str.join(str1,split(str2))
print(result)
写程序实现split的功能,将字符串中指定子串作为切割点对字符串进行切割
例如:原字符串: 'how are you? and you?' 切割点: 'you' 结果: ['how are ', '? and ', '?']
result=str1.split('you')
print(result)
用思维导图(xmind)总结四大容器:列表、字典、元组、集合
