字符串相关方法和格式化

字符串相关方法

1.字符串.join(序列) - 将序列中的元素用指定的字符串拼接在一起,形成一个新的字符串(序列中的元素必须是字符串)
list1 = ['后裔', '王昭君', '鲁班七号', '孙悟空']
result = '+'.join(list1)
print(result)  # '+'有点类似sep='+'
# 如果需要join的序列中不是元素不是字符串,就像办法把他的元素变成字符串再join
nums = [23, 45, 67, 89, 45]
result = ''.join([str(i) for i in nums])
print(result)
2.字符串1.split(字符串2,N) -将字符串1中所有的字符串2作为切割点对字符串进行切割,返回包含切割后每一小段字符串对应的字符串的列表作为列表的各个元素。
N: 表示需要切割的次数,默认为全切
str1 = 'abcmn123mnkplmn##'
result = str1.split('mn')
print(result)
join 和split 用法基本相反(jion前的字符串是连接字符串的字符,split后是切割的字符模板,两者想反)
当切割点再开头或者结尾或者连续出现会出现空字符串
str1 = 'mnabcmn123mnkplmn##mn'
result = str1.split('mn')
print(len(result))
str1 = 'abcmn123mnkplmn##'
print(str1.split('mn', 2))
3.字符串1.replace(字符串2,字符串3,N) - 将字符串1中的字符串2替换成字符串3
N:将字符串1中前N个字符串2替换成字符串3 ,默认不写为全替换
str1 = 'mnabcmn123mnkplmn##mn'
result = str1.replace('mn', 'A')
print(result)
# 也可以用来删除指定字符串
result = str1.replace('mn', '')
print(result)
4.字符串.strip() -删除字符串左右两端的空白字符
字符串.rstrip() - 只删除右边空白的
字符串.fstrip() - 只删除左右空白
str1 = ' \n 小明\t\n'
print(len(str1), str1)
result = str1.strip()
str1 = '/\n小明'
print(str1.strip())  # 不加参数只能删除空白字符
result = str1.strip('/')  # 加参数表示想去掉的指定符号
print(result, len(result))
5.find、index
字符串1.find(字符串2,开始下标,结束下标) -获取字符串1中字符串2第一次出现的文字(以0开始的下标值返回),如果字符串不存在会返回-1
字符串1.index(字符串2,开始下标,结束下标) -获取字符串1中字符串2第一次出现的文字(以0开始的下标值返回),如果字符串不存在会报错
str1 = 'how are you? I am fine, thank you!'
print(str1.find('you'))
print(str1.index('you'))
print(str1.find('abc'))  # -1 表示下标-1 find只会从0下标开始找,-1代表找不到
6.其他方法
center、rjust、ljust、zfill
# 'abc'     ->'xxabcxx'、'xxxxabc'、'abcxxxx'、'0000abc'
str1 = 'abc'
print(str1.center(7, 'x'))  # xxabcxx   如果是8会先添加右边
print(str1.rjust(7, '*'))  # ****abc
print(str1.ljust(7, '$'))  # abc$$$$
print(str1.zfill(7))  # 0000abc    他只会以0填充所有只有一个参数
字符串.count(字符或者字串)
str1 = 'mnabcmn123mnkplmn##mn'
print(str1.count('m'))
print(str1.count('mn'))
字符串.endwith(字符或者子串) - 检查是否是字符或者子串结尾的 返回布尔值
str1 = 'mnabcmn123mnkplmn##mn'
str1.endswith('abc')
字符串.startwith(字符或者子串) -检查是否是字符或者子串开头的 返回布尔值
字符串.format
name = '小明'
age = 18
result = str1.format('{}今年{}岁!', name, age)
print(result)
result = str1.format('{0}今年{1}岁!', name, age)  # {0}获取下标为0的数据
print(result)
字符串.format_map 用法和format类似不过里面跟得是一个字典
esult = '{name}今年{age}岁!'.format_map({'name': '小明', 'age': 18})
字符串.isdecimal()
print('2323'.isdecimal())  # True
print('2323一'.isdecimal())  # False
字符串.isdigit()
print('2323'.isdigit())  # True
print('2323一'.isdigit())  # False
上诉两种只能表示里面是否是10进制的数字 返回布尔值
字符串.isnumeric() (如果字符单独存在表示中文数字或者罗马也会返回True)
print('232'.isnumeric())  # True
print('232'.isnumeric())  # True
print('12356一'.isnumeric())    #False
字符串.isupper 判断是否是大写字母
字符串.islower 判断是否是小写字母
字符串.upper 小写转大写
字符串.lower 大写转小写
print('a'.upper())
print('A'.lower())
maketrans、translate
str.maketrans(字符串1,字符串2) ->类似创建一个映射表,以字符为单位对应位置替换字符,字符2中的字符替换字符串1
字符串.translate(映射表) ->根据映射表的对应关系替换字符串中的相关字符
str1 = '1745612316'
table = str.maketrans('1234567890', '一二三四五六七八九零')
result = str1.translate(table)
print(result)

字符串格式化

1.字符串拼接
name = '笑话'
age = 18
message = name + '今年' + str(age) + '岁!'
2.格式字符串

格式字符串:包含一个或者多个格式占位符的字符串%(数据1,数据2,数据3.。。)
说明:()中的数据必须和前面字符串中的占位符一一对应。如果只需要一个数据,那么()可以省略

常用的字符串占位符有哪些:
%s - 可以给任何类型的数据占位(字符串占位符)
%d - 只能给数字数据占位(整数占位符)
%f - 只能给数字数据占位(浮点数占位符,默认保留6位)
%.nf (n:保留n位小数)

money = 15000
message = '%s今年%d岁!月薪:%.2f元' % (name, age, money)
print(message)
3.f-string
1)f-string的基本用法:如果在字符串的最外面加了f,就可以在字符串中通过{}来给字符串提供内容:{表达式} -表达式的结果就是字符串的内容
str2 = f'姓名:{name},年龄:{age}'
print(str2)

str3 = f'a:{age},b:{100},c:{100 * 2},d:{100 > 200},f:{name * 2},g:{name[-1]}'
print(str3)
2) f -string的参数: {提供数据表达式:参数}
a.控制小数位数
{提供数据表达式:.Nf}
money = 67268941
result = f'余额:{money:.2f}元'

num = 201.3447
result = f'整数:{num:.0f}'   # 不要小数位数
print(result)
b.大金额逗号分隔:{提供数据的表达式:,} (只能是三位一个’,’ , 一般银行用得多)
money = 1656410000
result = f'金额:{money:,}元'
result = f'金额:{money:,.2f}元'       #与小数位数组合使用
print(result)
组合使用{提供数据的表达式:,.Nf}
d.控制填充长度(实现center、rjust、ljust、zfill的功能)
‘abc’ -> ‘xxabcxx’
{提供数据的表达式:字符^7}
{提供数据的表达式:字符>7}
{提供数据的表达式:字符<7}
{提供数据的表达式:0>7}
与上述对应的效果相同
num = 3
class_name = 'py2204'
study_id = f'{class_name}{num:0>3}'
print(study_id)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值