一、字符串相关方法
1. 字符串.join(序列)
将序列中的元素用指定的字符串拼接在一起,形成一个新的字符串
序列中的元素必须是字符串
示例:
list1 = ['后裔', '王昭君', '鲁班7号', '孙悟空']
result = ''.join(list1)
print(result)
result = '+'.join(list1)
print(result)
result = ' and '.join(list1)
print(result)
result = '*'.join('abc')
print(result)
结果显示为:
后裔王昭君鲁班7号孙悟空
后裔+王昭君+鲁班7号+孙悟空
后裔 and 王昭君 and 鲁班7号 and 孙悟空
a*b*c
如果需要join的序列中的元素不是字符串,就想办法把它的元素变成字符串再join
例如:
nums = [23, 45, 67, 89, 45]
# ['23', '45', '67', '89', '45']
result = ''.join([str(x) for x in nums])
print(result)
2. 字符串1.split(字符串2)
1)字符串1.split(字符串2)
用法:将字符串1中所有的字符串2作为切割点对字符串进行切割,返回包含切割后每一小段对应的字符串的列表
2)字符串1.split(字符串2, N)
用法:将字符串1中前N个字符串2作为切割点为字符串1进行切割
示例:
str1 = 'abcmn123mnkplmn##'
result = str1.split('mn')
print(result)
str1 = 'mnabcmnmn123mnkplmn##mn'
result = str1.split('mn')
print(result)
str1 = 'abcmn123mnkplmn##'
result = str1.split('mn', 2)
print(result)
显示结果为:
['abc', '123', 'kpl', '##']
['', 'abc', '', '123', 'kpl', '##', '']
['abc', '123', 'kplmn##']
3. 字符串1.replace(字符串2, 字符串3)
1)字符串1.replace(字符串2, 字符串3)
将字符串1中所有的字符串2都替换成字符串3
2)字符串1.replace(字符串2, 字符串3, N)
将字符串1中前N个字符串2替换成字符串3
示例:
str1 = 'mnabcmnmn123mnkplmn##mn'
result = str1.replace('mn', 'ABC')
print(result)
result = str1.replace('mn', '')
print(result)
result = str1.replace('mn', 'AB', 3)
print(result)
显示结果为:
ABCabcABCABC123ABCkplABC##ABC
abc123kpl##
ABabcABAB123mnkplmn##mn
4. 字符串.strip()
删除字符串左右两端的空白字符
字符串.rstrip() : 删除字符串右端的空白字符
字符串.lstrip() : 删除字符串左端的空白字符
示例:
str1 = '\n\t 小 明\n\t '
print(str1)
result = str1.strip()
print(result)
str2 = '//小明'
result = str2.strip('/')
print(result)
5. find、index
1)字符串1.find(字符串2)
获取字符串1中字符串2第一次出现的位置(以0开始的下标值返回),如果字符串2不存在返回-1
2)字符串1.index(字符串2)
获取字符串1中字符串2第一次出现的位置(以0开始的下标值返回),如果字符串2不存在报错!
3)字符串1.find(字符串2, 开始下标, 结束下标)
获取字符串1中指定范围内字符串2第一次出现的位置
4)字符串1.index(字符串2, 开始下标, 结束下标)
获取字符串1中指定范围内字符串2第一次出现的位置
示例:
str1 = 'how are you? I am fine, thank you! and you?'
print(str1.find('you'))
print(str1.index('you'))
print(str1.find('abc')) # -1
# print(str1.index('abc')) # 报错!
print(str1.find('you', 10)) # 30
print(str1.find('you', 10, 26)) # -1
rfind、rindex:从右往左数,第一次出现的位置
str1 = 'how are you? I am fine, thank you! and you?'
print(str1.rfind('you'))
6. 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
7. 字符串.count(元素)
元素出现的次数
str1 = 'mnabcmnmn123mnkplmn##mn'
print(str1.count('a'))
print(str1.count('mn'))
8. 字符串.endswith(元素)
判断元素是否是字符串最后结尾,True 或者 False
str1 = 'mnabcmnmn123mnkplmn##mn'
print(str1.endswith('abc'))
print(str1.endswith('#mn'))
print(str1.startswith('ab'))
print(str1.startswith('mn'))
二、格式化字符串
普通写法:
name = input('请输入姓名:')
age = input('请输入年龄:')
str1 = '小明今年20岁'
print(name, '今年', age, '岁')
1.format()方法
配合{}向一个文本中任意传递参数
注意:format中数据的个数需要和{}的数量保持一致
str2 = '{}今年{}岁'.format(name, age)
print(str2)
2.f-字符串
str3 = f'{name}今年{age}岁'
print(str3)
3.千分位符 ,
:, 表示将传进来的数据,每隔三位数字,分隔一次
num = 1354879512154651
a = '{:,}'.format(num) # :表示对num进行操作
print(a)
显示:
1,354,879,512,154,651
4. 小数显示成百分比: {提供数据的表达式: .N%}
b = '{:.2%}'.format(64 / 100)
print(b)
scale = 0.84
result = f'及格率:{scale:.1%}'
print(result)
5.控制小数位数: {提供数据的表达式:.Nf}
**{提供数据的表达式:,.Nf} **
既控制小数位数,又使用逗号
money = 672828279
result = f'余额:{money:.2f}元'
print(result)
result = f'金额:{money:,.2f}元'
print(result)
2022-6-21 15:29:30
%Y-%m-%d %H-%M-%S
from datetime import datetime
time_ = datetime(2022, 6, 21, 15, 33, 45)
print(time_)
c = '{:%Y-%m-%d %H:%M:%S}'.format(time_) # 区别是可以自定义
print(c)
6.控制填充长度
实现center、rjust、ljust、zfill的功能
1){提供数据的表达式:字符>长度}
2){提供数据的表达式:字符<长度}
3){提供数据的表达式:字符^长度}
注意:如果没有提供字符,会用空格填充
"""
*
**
***
"""
"""
*
**
***
"""
< — 左对齐,> — 右对齐,^ — 居中对齐
:>n – 将数据使用空格拓展为长度为 n 的字符串并且右对齐,字符串长度大于 n 则不动
:0>n – 将数据使用 0 拓展为长度为 n 的字符串并且右对齐
print('{:0>3}'.format('*'))
print('{:^4}'.format('**'))
print('{:>3}'.format('*****'))
num = 6
print(f'{num:0>3}')
print(f'{num:x>7}')
print(f'{num:x<7}')
print(f'{num:x^7}')
格式化输出的结果,数据类型一定是字符串(使用引号引起来的一堆符号的合集)
name = '张三'
age = 20
'{}今年{}岁'.format(name, age)
f'{name}今年{age}岁'