欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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