Day7 字符串详解——python学习之路
程序员文章站
2022-03-11 12:43:10
...
字符串简单操作
拼接 ‘+’
str1 = '蛋黄的长裙, '
str2 = '蓬松的头发'
print(str1+str2)
#(输出) 蛋黄的长裙, 蓬松的头发
重复 ‘*’
varstr = '驰名双标,' * 3
print(varstr)
#(输出) 驰名双标,驰名双标,驰名双标,
切片 [ ]
- 字符串的索引操作,只能访问,不能进行修改操作
- 语法:[开始值 : 结束值 : 步进值]
- 开始值:默认为0;结束值:默认最后一个字符的下标;步进值:默认为1
varstr = '长风破浪会有时,直挂云帆济沧海'
# 从头取到尾
print(varstr[::]) #(输出) 长风破浪会有时,直挂云帆济沧海
# 获取指定下标的元素
print(varstr[1]) #(输出) 风
# 从下标1开始取值, 一直到下标5之前, 左闭右开
print(varstr[1:5]) #(输出) 风破浪会
# 步进值为2
print(varstr[::2]) #(输出) 长破会时
# 步进值为负数, 反向输出
print(varstr[::-1]) #(输出) 海沧济帆云挂直,时有会浪破风长
字符串的格式化方法
format
普通方式传参
a = '卧底'
varstr = '柯南里的酒厂成员, {} {} {} {} {} {}'.format(a,a,a,'叛徒',a,a)
print(varstr)
#(输出) 柯南里的酒厂成员, 卧底 卧底 卧底 叛徒 卧底 卧底
索引传参
varstr = '名侦探柯南cp大队: 小兰cp{0}, {2}cp赤井秀一'.format('新一', '目暮警官', '宫野明美')
print(varstr)
#(输出) 名侦探柯南cp大队: 小兰cp新一, 宫野明美cp赤井秀一
关键字传参
varstr = '被誉日本警察的救世主:{a}, 女扮男装的高智商侦探:{b}'.format(a='工藤新一', b='世良真纯')
print(varstr)
#(输出) 被誉日本警察的救世主:工藤新一, 女扮男装的高智商侦探:世良真纯
容器类型数据传参
# 字典传参
data = {'a':'服部平次', 'b':'毛利小五郎'}
varstr = '关西的高中生侦探:{a}, 毛利侦探事务所一把手:{b}'.format(**data)
print(varstr)
#(输出) 关西的高中生侦探:服部平次, 毛利侦探事务所一把手:毛利小五郎
# 列表传参
varstr = '赤井秀一: {0[0]}, 水无伶奈: {0[0]}, 琴酒: {0[1]}, 伏特加: {1[1]}'.format(['卧底','劳模'], ['侦探', '司机'])
print(varstr)
#(输出) 赤井秀一: 卧底, 水无伶奈: 卧底, 琴酒: 劳模, 伏特加: 司机
限定小数的位数
varstr = '圆周率: {:.2f}'.format(3.1415926)
print(varstr)
#(输出) 圆周率: 3.14
通过f’ '格式化
- python3.7中新增的 格式化方法 f方法(找到括号里变量对应的内容并解析)
data = {'a':'铃木园子','b':'工藤新一'}
varstr = f'小兰的闺蜜是{data["a"]}, 青梅竹马是{data["b"]}'
print(varstr)
#(输出) 小兰的闺蜜是铃木园子, 青梅竹马是工藤新一
英文字符与字符检测相关函数
大小写转换
capitalize()
- str.capitalize() 返回原字符串的副本, 如果第一个字符是英文字符, 转成大写字符, 其余为小写
varstr = 'shopping at a mall'
res = varstr.capitalize()
print(res)
#(输出) Shopping at a mall
title()
- str.title() 返回原字符串的副本, 把字符串中的每个单词首字母大写
varstr = 'shopping at a mall'
res = varstr.title()
print(res)
#(输出) Shopping At A Mall
upper()
- str.upper() 把字符串中的英文字母全部转为大写
varstr = 'shopping at a mall'
res = varstr.upper()
print(res)
#(输出) SHOPPING AT A MALL
lower()
- str.lower() 把字符串中的英文字母全部转为小写
varstr = 'SHOPPING AT A MALL'
res = res.lower()
print(res)
#(输出) shopping at a mall
swapcase()
- str.swapcase() 把字符串里的英文字符大写转小写, 小写转大写
varstr = 'SHOPPING AT a mall'
res = varstr.swapcase()
print(res)
#(输出) shopping at A MALL
字符检测方法
isupper()
- str.isupper() 检测当前的字符串中的英文字符是否全部由大写字符组成
varstr = 'shopping at a mall'
print(varstr.isupper())
#(输出) False
islower()
- str.islower() 检测当前的字符串中的英文字符是否全部由小写字符组成
varstr = 'shopping at a mall'
print(varstr.islower())
#(输出) True
istitle()
- str.istitle() 检测当前字符串中的每个英文单词是否符合首字母大写
varstr = 'Shopping At A Mall'
print(varstr.istitle())
#(输出) True
isalnm()
- str.isalnm() 检测当前的字符串是否由字符(中文, 英文字符, 数字)组成
varstr = 'shopping at a mall' # 字符串里有空格,所以为False
print(varstr.isalnum())
#(输出) False
isalpha()
- str.isalpha() 检测当前的字符串是否由中英文字符组成
varstr = '我love你'
print(varstr.isalpha())
#(输出) True
isdigit()
- str.isdigit() 检测当前的字符串是否由数字字符组成
varstr = '123456'
print(varstr.isdigit())
#(输出) True
isspace()
- str.isspace() 检测当前的字符串是否由空格字符组成
varstr = ' '
print(varstr.isspace())
#(输出) True
startswith()
- str.startswith() 检测一个字符串是否由指定的字符开始, 可以指定开始与结束位置, 默认从头(0)开始检测, 结束一般不写
varstr = 'shopping at a mall'
print(varstr.startswith('shop')) #(输出) True
print(varstr.startswith('i', 5)) #(输出) True
endswith()
- str.endswith() 检测一个字符串是否由指定的字符结尾, 可以指定开始与结束位置
varstr = 'shopping at a mall'
print(varstr.endswith('all')) #(输出) True
# 0-8区间内的字符是否以'ing'结尾
print(varstr.endswith('ing', 0, 8)) #(输出) True
字符串查找与操作相关的函数(重点)
字符串查找相关函数
in
- 检测一个字符串是否存在于另一个字符串中
varstr = 'Touch the air once again miss you breath'
print('is' in varstr)
#(输出) True
len()
- 获取字符串的长度
varstr = 'Touch the air once again miss you breath'
print(len(varstr))
#(输出) 40
find()
- str.find() 从左向右查找指定字符在字符串中第一次出现的索引位置, 未找到则返回-1, (可选)指定开始与结束位置
varstr = 'Touch the air once again miss you breath'
print(varstr.find('is', 0, 17))
#(输出) -1
rfind()
- str.rfind() 从右向左查找指定字符在字符串中第一次出现的索引位置, 未找到则返回-1, (可选)指定开始与结束位置
varstr = 'Touch the air once again miss you breath'
print(varstr.rfind('a', 0, 17))
#(输出) 10
index()
- str.index() 使用同find方法一样, 但没有找到则报错
varstr = 'Touch the air once again miss you breath'
print(varstr.index('is', 0, 17))
#(报错) ValueError: substring not found
rindex()
- str.rindex() 同rfind方法一样, 没有找到则报错
count()
- str.count() 统计一个字符串在另一个字符串中出现的次数
varstr = 'Touch the air once again miss you breath'
print(varstr.count('u'))
#(输出) 2
字符串操作相关函数
split()
- 按照指定的字符进行分隔,把一个字符串分隔成一个列表,(可选)并可以选定分隔次数,rsplit()会从后往前开始分隔
varstr = 'uid_admin_id_123'
res = varstr.split('_')
print(res) #(输出) ['uid', 'admin', 'id', '123']
# 分隔2次
res = varstr.split('_', 2)
print(res) #(输出) ['uid', 'admin', 'id_123']
join()
- str.join() 按照指定的字符, 把容器类型中的数据连接成一个字符串
arr = ['Cease', 'to', 'struggle', 'and', 'you', 'cease', 'to', 'live']
res = ' '.join(arr)
print(res)
#(输出) Cease to struggle and you cease to live
strip()
- str.strip() 可以去除字符串左右两侧的指定字符
- str.lstrip() 去除字符串左侧的指定字符
- str.rstrip() 去除字符串右侧的指定字符
vars = '****这是一个文章的标题**'
res = vars.strip('*')
print(res)
#(输出) 这是一个文章的标题
replace()
- str.replace() 替换, 可以指定替换次数
vars = 'i love you'
res = vars.replace('love', 'like')
print(res)
#(输出) i like you
center()
- str.center() 使用指定字符填充至指定长度, 不写默认用空格填充
- str.ljust() 在后边填充
- str.rjust() 在前边填充
vars = 'love'
res = vars.center(11,'*')
print(res)
#(输出) ****love***
# str.ljust() 在后边填充
res = vars.ljust(8,'*')
print(res)
#(输出) love****
# str.rjust() 在前边填充
res = vars.rjust(8,'*')
print(res)
#(输出) ****love