字符串存储方式
a = “karry”
b = str(123456)
字符串拼接
name_first = “sun”
name_last = “er”
name_first + name_last = “suner”
三单/双引号 可以实现换行打印
单引号和双引号区分来用:
三引号和非三引号区别在于三引号可以形成带有换行的字符串
三引号可作为长注释来用
字符串中的特殊字符
“\” 转义符 将字符串当中的具有特殊含义的字符的特殊含义取消掉和续行;如单引号嵌套使用,需要使用转义符“\”
“\n”换行符
“\t” 水平制表符,tab键
字符串格式化操作
在字符串当中以指定的格式符号进行占位,然后我们将指定的数据传入字符串
%s:字符串占位符
%d:数字占位符
%f:浮点型数字占位符
python字符串索引
字符串截取:字符串[start:end],得到对应索引范围的元素,包含起始端,不包含结尾端,默认截取的方向是从左往右的;
步长截取:字符串[start:end:step] 按照step步长进行截取;
切片的语法:[起始:结束:步长]
注意:选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。
name_str = "sunerwangjunkai"
print("步长为2取值:",name_str[::2])
print("从下标2开始取值:",name_str[2:])
print("从下标1开始,5结束(不包含5):",name_str[1:5])
print("顺序倒序取值:",name_str[::-1])
默认取法:
字符串[start:end:step],start默认为0,end默认为字符串结尾元素,step默认为1
若step > 0,则表示从左向右进项切片,此时start必须小于end才有结果,否则为空
若step < 0,还是表示从左到右只不过反过来切片,此时,start必须大于end才有结果,否则为空
python字符串的方法
字符串查找
① count:计数功能,返回自定义字符在字符串当中的个数
② find:查找,返回从左开始第一个指定字符的索引,找不到返回-1
③ rfind:查找,返回从右开始第一个指定字符的索引,找不到返回-1
④ index:查找,返回从左开始第一个指定字符的索引,找不到报错
⑤ rindex:查找,返回从右开始第一个指定字符的索引,找不到报错
name_str = "sunerjunksunun"
print("u的个数:", name_str.count("u")) # 打印结果:4
print("从左边查找u字符索引:", name_str.find("u")) # 打印结果:1
print("从右边查找u字符索引:", name_str.rfind("u")) # 打印结果:12
print("从左边查找y字符索引:", name_str.find("y")) # 打印结果:-1
print("从右边查找y字符索引:", name_str.rfind("y")) # 打印结果:-1
print("从左边查找u字符索引:", name_str.index("u")) # 打印结果:1
print("从右边查找u字符索引:", name_str.rindex("u")) # 打印结果:12
# print("从左边查找y字符索引:", name_str.index("y")) # 结果:报错
# print("从右边查找y字符索引:", name_str.index("y")) # 结果:报错
字符串分割
①partition:把mystr以str分割成三部分,str前、str本身、str后(从左往右以第一个匹配到的str为str本身)
②rpartition:从右边开始
③split:字符串的分隔符切片
name_str = "sunkarrykaao"
print("从左往右:", name_str.partition("ka")) # 执行结果:('sun', 'ka', 'rrykaao')
print("从右往左:", name_str.rpartition("ka")) # 执行结果:('sunkarry', 'ka', 'ao')
print("按指定字符切割:", name_str.split("ka")) # 执行结果:['sun', 'rry', 'ao']
④splitlines:按照行分隔,返回一个包含各行作为元素的列表,按照换行符分割
name_str = "sddffff\nsdfsddfs\nfffsfffg"
print(name_str.splitlines()) # 结果:['sddffff', 'sdfsddfs', 'fffsfffg']
字符串的替换
① replace:从左到右替换指定的元素,可以指定替换的个数,默认全部替换
name_str = "suunneeee"
print("默认将e替换为y(全部):",name_str.replace("e","y")) # 执行结果:suunnyyyy
print("将e依次替换为y(两次):",name_str.replace("e","y",2)) # 执行结果:suunnyyee
② Translate:按照对应关系来替换内容
# 被替换和替换的长度必须一致,"s"->"w",依次类推
intab = "suner"
outtab = "wangj"
trantab = str.maketrans(intab,outtab)
str = "suner is in jiangsuwuxi"
print(str.translate(trantab)) # 执行结果:wangj iw in jiangwawaxi
makestrans()用法
语法: str.maketrans(intab, outtab);
Python maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,
第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
加深理解:
· intab -- 需要转换的字符组成的字符串。
· outtab -- 转换的目标字符组成的字符串。
字符串的修饰
① center:让字符串在指定的长度居中,如果不能居中左短右长,可以指定填充内容,默认以空格填充
name_str = "suner"
print("填充后的字符串:", name_str.center(10)) # 执行结果: suner
print("填充后的字符串长度:", len(name_str .center(10))) # 执行结果:10
print("空白用*填充:", name_str.center(10, "*")) # 执行结果: **suner***
② ljust:让字符串在指定的长度左齐,可以指定填充内容,默认以空格填充
name_str = "suner"
print("左对齐后的字符串:", name_str.ljust(10)) # 执行结果: suner
print("左对齐后的字符串长度:", len(name_str.ljust(10))) # 执行结果:10
print("空白用*填充:", name_str.ljust(10, "*")) # 执行结果:suner*****
③ rjust:让字符串在指定的长度右齐,可以指定填充内容,默认以空格填充
name_str = "suner"
print("右对齐后的字符串:", name_str.rjust(10)) # 执行结果: suner
print("右对齐后的字符串长度:", len(name_str.rjust(10))) # 执行结果:10
print("空白用*填充:", name_str.rjust(10, "*")) # 执行结果:*****suner
④ zfill:将字符串填充到指定的长度,不足地方用0从左开始补充
name_str = "suner"
print("长度不足用0补充:", name_str.zfill(10)) # 执行结果:00000suner
⑤ format:按照顺序,将后面的参数传递给前面的大括号
name_str = "suner"
print("我的名字是:{}".format(name_str)) # 执行结果:我的名字是:suner
⑥ strip:默认去除两边的空格,去除内容可以指定
name_str = " suner "
name_str1 = "yyysuner"
print("去掉空格:", name_str.strip()) # 执行结果:suner
print("去掉指定内容(y):", name_str1.strip("y")) # 执行结果:suner
⑦ rstrip:默认去除右边的空格,去除内容可以指定
name_str = "suner "
name_str1 = "suneryyy"
print("从右边去掉空格:", name_str.rstrip()) # 执行结果:suner
print("从右边去掉指定内容(y):", name_str1.rstrip("y")) # 执行结果:suner
⑧ lstrip:默认去除左边的空格,去除内容可以指定
name_str = " suner"
name_str1 = "yyysuner"
print("从左边去掉空格:", name_str.lstrip()) # 执行结果:suner
print("从左边去掉指定内容(y):", name_str1.lstrip("y")) # 执行结果:suner
字符串的变形
① upper:将字符串当中所有的字母转换为大写
② lower:将字符串当中所有的字母转换为小写
③ swapcase:将字符串当中所有的字母大小写互换
name_str = "sunerWJK"
print("字符串中的小写改为大写:", name_str.upper()) # 执行结果:SUNERWJK
print("字符串中的大写改为小写:", name_str.lower()) # 执行结果:sunerwjk
print("字符串中大小写互换:", name_str.swapcase()) # 执行结果:SUNERwjk
④ title:将字符串当中的单词首字母大写,单词以非字母划分
name_str = "suner wang jun kai"
name_str1 = "suner1wang2jun3kai"
print("单词首字母大写:", name_str.title()) # 执行结果:Suner Wang Jun Kai
print("单词以非字母划分:", name_str1.title()) # 执行结果:Suner1Wang2Jun3Kai
⑤ capitalize:只有字符串的首字母大写
name_str = "suner wang jun kai"
print("字符串首字母大写:", name_str.capitalize()) # 执行结果:Suner wang jun kai
⑥ expandtabs:把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8
name_str = "suner\twang\tjun\tkai"
print("字符串首字母大写:", name_str.expandtabs()) # 执行结果:suner wang jun kai
字符串的判断
① isalnum:判断字符串是否完全由字母或数字组成
name_str = "suner888@"
name_str1 = "suner123456"
print("判断是否全部为数字或字母:", name_str.isalnum()) # 执行结果:False
print("判断是否全部为数字或字母:", name_str1.isalnum()) # 执行结果:True
② isalpha:判断字符串是否完全由字母组成
name_str = "suner888"
name_str1 = "suner"
print("判断全部为字母:", name_str.isalpha()) # 执行结果:False
print("判断全部为字母:", name_str1.isalpha()) # 执行结果:True
③ isdigit:判断字符串是否完全由数字组成
name_str = "suner888"
name_str1 = "123456"
print("判断全部为数字:", name_str.isdigit()) # 执行结果:False
print("判断全部为数字:", name_str1.isdigit()) # 执行结果:True
④ isupper:判断字符串当中的字母是否完全是大写
name_str = "sunerWJK"
name_str1 = "WJK"
print("判断字母全部为大写:", name_str.isupper()) # 执行结果:False
print("判断字母全部为大写:", name_str1.isupper()) # 执行结果:True
⑤ islower:判断字符串当中的字母是否完全是小写
name_str = "sunerWJK"
name_str1 = "wangjunkai"
print("判断字母全部为小写:", name_str.islower()) # 执行结果:False
print("判断字母全部为小写:", name_str1.islower()) # 执行结果:True
⑥ istitle:判断字符串是否满足title格式
name_str = "suner wjk"
name_str1 = "Suner Wjk"
print("判断是否满足title格式:", name_str.istitle()) # 执行结果:False
print("判断是否满足title格式:", name_str1.istitle()) # 执行结果:True
⑦ isspace:判断字符串是否完全由空格组成
name_str = "suner wjk"
name_str1 = " "
print("判断是否完全由空格组成:", name_str.isspace()) # 执行结果:False
print("判断是否完全由空格组成:", name_str1.isspace()) # 执行结果:True
⑧ startswith:判断字符串的开头字符,也可以截取判断
name_str = "suner wjk"
print("判断字符串是l开头的:", name_str.startswith("l")) # 执行结果:False
print("判断字符串是s开头的:", name_str.startswith("s")) # 执行结果:True
print("判断字符串是sun开头的:", name_str.startswith("sun")) # 执行结果:True
⑨ endswith:判断字符串的结尾字符,也可以截取判断
name_str = "suner wjk"
print("判断字符串是l结尾的:", name_str.endswith("l")) # 执行结果:False
print("判断字符串是k结尾的:", name_str.endswith("k")) # 执行结果:True
print("判断字符串是jk结尾的:", name_str.endswith("jk")) # 执行结果:True
⑩ split:默认全部切片,可以指定切片几次
name_str = "suner wang jun kai"
name_str1 = "xxxx@qq.com"
print("全部按空格切割:", name_str.split()) # 执行结果:['suner', 'wang', 'jun', 'kai']
print("按空格切割一次:", name_str.split(" ", 1)) # 执行结果:['suner', 'wang jun kai']
print("以.切割:", name_str1.split(".")) # 执行结果:['xxxx@qq', 'com']
字符串的占位符
占位符:%s %d \n
#双引号写什么就打印什么
# 注意整数用%d;字符串用%s
\n:换行符, 输出的时候,如果有\n,那么此时\n后的内容会在另外一行显示
字符串的join函数
join()连接字符串数组。将字符串、元组、列表中的元素(必须是字符串)以指定的字符(分隔符)连接生成一个新的字符串
语法:'sep'.join(seq)
参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串
name_str = "suner wang jun kai"
neme_str1 = ' '.join(name_str)
num_list = ["11", "22", "33", "44"]
num_list1 = '8'.join(num_list)
# 执行结果:s u n e r w a n g j u n k a i , str类型
print("将字符串分割组成新字符串:%s\n数据类型为:%s"%(neme_str1, type(neme_str1)))
# 执行结果:11822833844 , str类型
print("将列表组成字符串格式:%s\n数据类型为:%s"%(num_list1, type(num_list1)))