从零学习Python:字符串相关方法和格式化字符串

一、字符串相关方法

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 鲁班7and 孙悟空
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}岁'
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值