我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
字符串(str)
- 概念
- 由多个单字符组成的一个集合
- 非原始字符串
使用单引号:'abc' 使用双引号:"abc" 使用三单引号:'''abc''' 使用三双引号:"""abc"""
- 原始字符串
使用单引号:r'ab \n c' 使用双引号:r"ab \t c" 使用三单引号:r'''ab \\ c''' 使用三双引号:r"""a "b" c"""
- 转义符
- 概念
- 通过转换某个指定的字符,使他具备特殊的含义
- python3中通过 “\” 作为转义
- 常见转义符
\(在行尾时) # 续行符 \' # 单引号 \" # 双引号 \n # 换行 \t # 横向制表符
- 各个形式的特点
- 单/双引号
- 混合使用可以避免使用转义符
str = '我是"FengZi"' print(str) # -----输出结果----- 我是"FengZi"
- 一般内容需要写成一行,跨行需要通过续航符或小括号
str1 = '我是FengZi,'\ '我喜欢Python' str2 = ('我是FengZi' '我喜欢Python') print(str1) print(str2) # -----输出结果----- 我是FengZi,我喜欢Python 我是FengZi我喜欢Python
- 三引号
- 可以直接跨行书写
str = """我是FengZi 我喜欢Python""" print(str) # -----输出结果----- 我是FengZi 我喜欢Python
- 可用于函数、类的注释文档
# 查看注释文档 help(xxx)
字符串的一般操作
字符串拼接
- 多个字符串拼接成一个字符串
# 方式1:str1 + str2 str1 = '我的名字是' str2 = '疯子' result = str1 + str2 print(result) # -----输出结果----- # 我的名字是疯子 # 方式2:str1 str2 str1 = '我的名字是' '疯子' print(str1) # -----输出结果----- # 我的名字是疯子 # 方式3:'xxx%s'%'bbbb', 'xxx%s, %d'%('bbbb', 1111) str1 = '我的名字是%s'%'疯子' str2 = '我的名字是%s,我今年%d岁了'%('疯子', 36) print(str1) print(str2) # -----输出结果----- # 我的名字是疯子 # 我的名字是疯子,我今年36岁了 # 方式4:str * 10 str1 = '疯子 ' * 10 print(str1) # -----输出结果----- # 疯子 疯子 疯子 疯子 疯子 疯子 疯子 疯子 疯子 疯子
字符串切片
- 获取一个字符串的某个片段
- 获取某一个字符
# 通过下标(索引)获取:str[index] # 下标(索引):字符串中每个字符的位置,从0开始 # 如果下标(索引)为负数,则表示从后往前,最后一个字符为-1 str = 'abcdefg' print(str[3]) print(str[-3]) # -----输出结果----- d e
- 获取一个字符串片段
# 通过下标(索引)获取:str[start: stop: step] # 取值区间:[start, stop),包含start,不包含stop # start默认0,stop默认len(str),step默认1 # step > 0 从左到右,step < 0 从右到左 str = 'abcdefg' print(str[0: 3]) print(str[0: 5: 2]) print(str[5: 0: -2]) print(str[-1: -7: -2]) # -----输出结果----- abc ace fdb gec
- 字符串反转
# str[::-1] str = 'abcdefg' print(str[::-1] # -----输出结果----- gfedcba
字符串的函数操作
len()
分类 内置函数 作用 获取对象的长度(字符个数) 语法 len(obj) 参数 obj:对象 返回值 返回字符个数,整型(int)
find()
分类 对象方法 作用 检索指定子串,返回子串索引位置 从左往右检索,检索到了就停止 语法 str.find(sub, start=0, end=len(str)) 参数 sub:指定子串 start:检索的起始位置,默认为0 end:检索的结束位置,默认整个字符长度 返回值 找到了子串,返回子串的索引位置 没找到子串,返回 -1
rfind()
分类 对象方法 作用 检索指定子串,返回子串索引位置 从右往左检索,检索到了就停止 语法 str.rfind(sub, start=0, end=len(str)) 参数 sub:指定子串 start:检索的起始位置,默认为0 end:检索的结束位置,默认整个字符长度 返回值 找到了子串,返回子串的索引位置 没找到子串,返回 -1
index()
分类 对象方法 作用 获取指定子串,返回子串索引位置 从左往右检索,检索到了就停止 语法 str.index(sub, start=0, end=len(str)) 参数 sub:指定子串 start:检索的起始位置,默认为0 end:检索的结束位置,默认整个字符长度 返回值 找到了子串,返回子串的索引位置 没找到子串,程序报异常
rindex()
分类 对象方法 作用 获取指定子串,返回子串索引位置 从右往左检索,检索到了就停止 语法 str.rindex(sub, start=0, end=len(str)) 参数 sub:指定子串 start:检索的起始位置,默认为0 end:检索的结束位置,默认整个字符长度 返回值 找到了子串,返回子串的索引位置 没找到子串,程序报异常
count()
分类 对象方法 作用 计算指定子字符在字符串中的个数 语法 str.count(sub, start=0, end=len(str)) 参数 sub:指定子串 start:检索的起始位置,默认为0 end:检索的结束位置,默认整个字符长度 返回值 子字符串的个数,整型
replace()
分类 对象方法 作用 使用指定新字符串替换字符串中的旧字符串 语法 replace(old, new[, count]) 参数 old:需要替换的旧字符串 new:用于替换的新字符串 count:替换的个数,默认全部替换 返回值 替换后的新字符串 并不会修改原字符串本身
capitalize()
分类 对象方法 作用 将字符串的首字母变为大写,其他字母小写 语法 str.capitalize() 参数 返回值 首字母大写其他字母小写后的新字符串,不改变原字符串
title()
分类 对象方法 作用 将字符串中每个单词的首字母大写,其他字母小写(连续在一起的字母为一个单词) 语法 str.title() 参数 返回值 返回每个单词首字母大写其他字母小写的新字符串,原字符串不改变
lower()
分类 对象方法 作用 将字符串中所有字母转换为小写 语法 str.lower() 参数 返回值 返回所有字母全部转换为小写字母的新字符串,原字符串不改变
upper()
分类 对象方法 作用 将字符串中所有字母转换为大写 语法 str.upper() 参数 返回值 返回所有字母全部转换为大写字母的新字符串,原字符串不改变
ljust()
分类 对象方法 作用 用指定字符(1个)在字符串右侧填充,将原字符串填充到指定长度 l:表示原字符串保持在左侧 语法 str.ljust(width, fillchar) 参数 width:指定长度 fillchar:用于填充的字符 返回值 返回用指定字符填充到指定长度的新字符串,不改变原字符串
rjust()
分类 对象方法 作用 用指定字符(1个)在字符串左侧填充,将原字符串填充到指定长度 r:表示原字符串保持在右侧 语法 str.rjust(width, fillchar) 参数 width:指定长度 fillchar:用于填充的字符 返回值 返回用指定字符填充到指定长度的新字符串,不改变原字符串
center()
分类 对象方法 作用 用指定字符(1个)在字符串两侧填充,将原字符串填充到指定长度 优先填充右侧 语法 str.center(width, fillchar) 参数 width:指定长度 fillchar:用于填充的字符 返回值 返回用指定字符填充到指定长度的新字符串,不改变原字符串
lstrip()
分类 对象方法 作用 移除字符串左侧指定字符集,默认为空字符(\n \t 空格) 语法 str.lstrip(chars) 参数 chars:指定要移除的字符集(可以是多个字符, "#!wa*") "#!wa*":表示 "#" | "!" | "w" | "a" | "*" 返回值 返回被移除指定字符后的新字符串,原字符串不改变
rstrip()
分类 对象方法 作用 移除字符串右侧指定字符集,默认为空字符(\n \t 空格) 语法 str.rstrip(chars) 参数 chars:指定要移除的字符集(可以是多个字符, "#!wa*") "#!wa*":表示 "#" | "!" | "w" | "a" | "*" 返回值 返回被移除指定字符后的新字符串,原字符串不改变
strip()
分类 对象方法 作用 移除字符串两侧指定字符集,默认为空字符(\n \t 空格) 语法 str.strip(chars) 参数 chars:指定要移除的字符集(可以是多个字符, "#!wa*") "#!wa*":表示 "#" | "!" | "w" | "a" | "*" 返回值 返回被移除指定字符后的新字符串,原字符串不改变
split()
分类 对象方法 作用 按照指定分割符将字符串分割指定次数,从左侧开始 语法 str.split(sep, maxsplit) 参数 sep:指定分割符 maxsplit:最大分割次数 返回值 返回分割后的字符串组成的列表
rsplit()
分类 对象方法 作用 按照指定分割符将字符串分割指定次数,从右侧开始 语法 str.rsplit(sep, maxsplit) 参数 sep:指定分割符 maxsplit:最大分割次数 返回值 返回分割后的字符串组成的列表
partition()
分类 对象方法 作用 从左侧开始检索指定分割符,检索到第一个就进行拆分 语法 str.partition(sep) 参数 sep:指定分割符 返回值 返回一个元组 检索到分割符:(分割符左侧内容, 分割符, 分割符右侧内容) 未检索到分割符:(原字符串, "", "")
rpartition()
分类 对象方法 作用 从右侧开始检索指定分割符,检索到第一个就进行拆分 语法 str.rpartition(sep) 参数 sep:指定分割符 返回值 返回一个元组 检索到分割符:(分割符左侧内容, 分割符, 分割符右侧内容) 未检索到分割符:("", "", 原字符串)
splitlines()
分类 对象方法 作用 按照换行符(\r,\n)将字符串拆分成多个元素 语法 str.splitlines(keepends) 参数 keepends:bool类型,是否保留换行符,默认False 返回值 返回一个包含了所有拆分元素的列表
join()
分类 对象方法 作用 通过字符串将给定的可迭代对象进行拼接成一个字符串 可迭代对象:可以通过for循环进行遍历的对象 语法 str.join(iterable) 参数 iterable:可迭代对象 返回值 返回一个通过字符串拼接的新字符串
isalpha()
分类 对象方法 作用 判断字符串中是否所有的字符都是字母,不包含数字、特殊符号、标点符号等 语法 str.isalpha() 参数 返回值 bool类型,返回True或False
isdigit()
分类 对象方法 作用 判断字符串中是否所有的字符都是数字,不包含字母、特殊符号、标点符号等 语法 str.isdigit() 参数 返回值 bool类型,返回True或False
isalnum()
分类 对象方法 作用 判断字符串中是否所有的字符都是数字或字母,不包含特殊符号、标点符号等 语法 str.isalnum() 参数 返回值 bool类型,返回True或False
isspace()
分类 对象方法 作用 判断字符串中是否所有的字符都是空白符(包含空格、缩进、换行等不可见转义符) 语法 str.isspace() 参数 返回值 bool类型,返回True或False
startswith()
分类 对象方法 作用 按指定开始和结束索引位置截取字符串,并判断截取后的字符串是否以指定字符开头 语法 str.startswith(prefix, start=0, end=len(str)) 参数 prefix:指定的字符 start:截取开始位置,默认0 end:截取结束位置,默认整个字符长度 返回值 bool类型,返回True或False
endswith()
分类 对象方法 作用 按指定开始和结束索引位置截取字符串,并判断截取后的字符串是否以指定字符结尾 语法 str.endswith(prefix, start=0, end=len(str)) 参数 prefix:指定的字符 start:截取开始位置,默认0 end:截取结束位置,默认整个字符长度 返回值 bool类型,返回True或False
- 补充
in
- 判定一个字符串是否被另一个字符串包含
not in
- 判定一个字符串是否不被另一个字符串包含
- 函数示例
# len name = 'my name is FengZi' # len print(len(name)) # find print(name.find('e', 7)) print(name.rfind('e', 7)) # index print(name.index('e')) print(name.index('e', 7, len(name))) print(name.rindex('e')) print(name.rindex('e', 7, len(name))) # count print(name.count('e')) print(name.count('e', 7, len(name))) # replace print(name.replace('FengZi', 'ShiXinFeng')) print(name.replace('e', 'R', 1)) # capitalize name = 'wo shi FengZi' print(name.capitalize()) # title print(name.title()) # lower name = 'WO shi FENGZI' print(name.lower()) # upper print(name.upper()) # ljust rjust center name = 'fengzi' print(name.ljust(20, '=')) print(name.rjust(20, '=')) print(name.center(20, '=')) # lstrip() rstrip() strip() name = ' feng zi ' print('|' + name + '|') print('|' + name.lstrip() + '|') print('|' + name.rstrip() + '|') print('|' + name.strip() + '|') # split() partition() rpartition() splitlines() name = 'feng-zi-36-0731-8828999' print(name.split('-')) print(name.split('-', 3)) print(name.rsplit('-', 3)) print(name.partition('-')) print(name.partition('|')) print(name.rpartition('-')) print(name.rpartition('|')) name = 'wo\nshi\rfeng zi' print(name.splitlines()) print(name.splitlines(True)) # join() items = 'abcdefg' print(','.join(items)) items = ['fengzi', '36', '长沙'] print('-'.join(items)) # isalpha() isalnum() name1 = 'fengzi' name2 = 'feng zi' name3 = '12306' name4 = 'fengzi123' print(name1.isalpha()) print(name2.isalpha()) print(name3.isalpha()) print(name4.isalpha()) print(name1.isdigit()) print(name2.isdigit()) print(name3.isdigit()) print(name4.isdigit()) print(name1.isalnum()) print(name2.isalnum()) print(name3.isalnum()) print(name4.isalnum()) name = '\n\t\r' print(name.isspace()) s = '2023-8-1 检查结果.xlsx' print(s.startswith('2023')) print(s.startswith('2023', 2, 5)) print(s.startswith('23', 2, 5)) print(s.endswith('xlsx')) print(s.endswith('xlsx', 5, 13)) print(s.endswith('结果', 5, 13))