6 字符串
6.1 转义字符
code:
# **********************************************
"""
字符串的定义方式:
1.单引号定义字符串''
2.双引号定义字符串""
3.三引号定义字符串(单双都可)
4.字符串定义是引号可以互相嵌套,但是不可以嵌套自己
"""
"""
转义字符:
一个普通的字符出现在转义符'\'后面时,实现了另外一种意义
'\'转义符,续行符。
作为转义字符,在其后面出现的字符可能会实现另外一种意义
作为续行符,在行尾使用'\'后,可以换行继续书写内容
'\n':换行符
'\r':代表光标的位置(从\r出现的位置开始作为光标的起点)
'\t':代表水平制表符(table缩进)
'\b':退格(按一次delete键)
'\\':就是显示\
r"内容" r'内容':不想让字符串使用转义字符
"""
print("续行符***************************************")
varslist = '123' \
'456'
print(f"varslist = {varslist}")
print("转义符***************************************")
var1 = "岁月是把杀猪刀,\n但是它拿长得丑的人一点办法都没有。。。"
print(var1)
var1 = "岁月是把杀猪刀,\r但是它拿长得丑的人一点办法都没有。。。"
print(var1)
var1 = "岁月是把杀猪刀,\t但是它拿长得丑的人一点办法都没有。。。"
print(var1)
var1 = "岁月是把杀猪刀,\b但是它拿长得丑的人一点办法都没有。。。"
print(var1)
var1 = "岁月是把杀猪刀,\\n但是它拿长得丑的人一点办法都没有。。。"
print(var1)
var1 = r"岁月是把杀猪刀,\\n但是它拿长得丑的人一点办法都没有。。。"
print(var1)
运行结果:
E:\Programs_Way\Python\python.exe D:/Prj/Python/Study_Basic_Grammar/_29string_escape_character.py
续行符***************************************
varslist = 123456
转义符***************************************
岁月是把杀猪刀,
但是它拿长得丑的人一点办法都没有。。。
但是它拿长得丑的人一点办法都没有。。。
岁月是把杀猪刀, 但是它拿长得丑的人一点办法都没有。。。
岁月是把杀猪刀但是它拿长得丑的人一点办法都没有。。。
岁月是把杀猪刀,\n但是它拿长得丑的人一点办法都没有。。。
岁月是把杀猪刀,\\n但是它拿长得丑的人一点办法都没有。。。
Process finished with exit code 0
6.2 字符串的操作符
code:
# ***************************************************
"""
字符串相关的操作:
字符串 + 操作
字符串 * 操作
字符串 [] 切片操作:字符串的索引操作,字符串中只能使用[]下标访问,不能修改
str[开始值:结束值:步进值]:开始值默认为0,结束值默认是最后一个下标,步进值默认为1,是前闭后开区间
"""
print("+ **********************************************")
"""
1 2 3 ......
君不见 ,黄河之水天上来,奔流到海不复回。
.....-3-2-1
"""
varstr = '君不见,黄河之水天上来,奔流到海不复回。'
varstr1 = '君不见,高堂明镜悲白发,朝如青丝暮成雪。'
print(varstr+varstr1)
print("* ***********************************************")
print(2*varstr1)
print("[] ***********************************************")
print(varstr[7])
print(varstr[2:5]) # 能取到2,不能取到5
print(varstr[0:10:2])
print(varstr[::])
print(varstr[-1])
print(varstr[-1:-10:-2])
运行结果:
E:\Programs_Way\Python\python.exe D:/Prj/Python/Study_Basic_Grammar/_30String_Operators.py
+ **********************************************
君不见,黄河之水天上来,奔流到海不复回。君不见,高堂明镜悲白发,朝如青丝暮成雪。
* ***********************************************
君不见,高堂明镜悲白发,朝如青丝暮成雪。君不见,高堂明镜悲白发,朝如青丝暮成雪。
[] ***********************************************
水
见,黄
君见黄之天
君不见,黄河之水天上来,奔流到海不复回。
。
。复海流,
Process finished with exit code 0
6.3 format()格式化字符串
code:
# ***************************************************
"""
字符串格式化:format()格式化字符串 f
1.普通方式
2.通过索引方式传参
3.关键字传参
4.容器类型数据传参
5.f格式化方法
6.format控制显示小数点精度
"""
print("普通方式**************************************")
a = "落霞"
varstr = "{}与孤鹜齐飞,{}共长天一色。".format(a,"秋水")
print(varstr)
print("索引方式**************************************")
varstr = "{1}与孤鹜齐飞,{2}共长天一色。".format("a","秋水","c")
print(varstr)
print("关键字方式**************************************")
varstr = "{a}与孤鹜齐飞,{b}共长天一色。".format(a="李白",b="秋水")
print(varstr)
print("容器类型方式**************************************")
varstr1 = "莉莉子:{0[0]},博博子:{0[1]},博莉子:{0[2]}".format(["Jasmine","Booooo~","Boly"])
print(varstr1)
data = {'a': "星星子",'b':"月月子"}
varstr2 = "{a}与孤鹜齐飞,{b}共长天一色。".format(**data)
print(varstr2)
print("f格式化***********************************")
varstr3 = f"{data['b']}与孤鹜齐飞,{data['a']}共长天一色。"
print(varstr3)
print("format控制显示小数点精度***********************************")
varstr4 = '圆周率是多少:{:.2f}'.format(3.1415936)
print(varstr4)
运行结果:
E:\Programs_Way\Python\python.exe D:/Prj/Python/Study_Basic_Grammar/_31string_format.py
普通方式**************************************
落霞与孤鹜齐飞,秋水共长天一色。
索引方式**************************************
秋水与孤鹜齐飞,c共长天一色。
关键字方式**************************************
李白与孤鹜齐飞,秋水共长天一色。
容器类型方式**************************************
莉莉子:Jasmine,博博子:Booooo~,博莉子:Boly
星星子与孤鹜齐飞,月月子共长天一色。
f格式化***********************************
月月子与孤鹜齐飞,星星子共长天一色。
format控制显示小数点精度***********************************
圆周率是多少:3.14
Process finished with exit code 0
6.4 字符串相关函数
- 大小写检测
- 字符检测
- 字符串查找
- 字符串操作
code:
# *********************************************************
"""
字符串函数:英文字符与字符检测相关函数
大小写检测:
str.capitalize()---返回原字符串的副本,其首个字符大写,其余为小写。
str.title()---返回原字符串的标题版本,其中每个单词第一个字母为大写,其余字母为小写。
str.upper()---返回原字符串的副本,其中所有区分大小写的字符均转换为大写。
str.lower()---返回原字符串的副本,其所有区分大小写的字符均转换为小写。
str.swapcase()---返回原字符串的副本,其中大写字符转换为小写,反之亦然。
字符检测:
str.isupper()---如果序列中至少有一个大写字母 ASCII 字符并且没有小写 ASCII 字符则返回 True ,否则返回 False 。
str.islower()---如果字符串中至少有一个区分大小写的字符且此类字符均为小写则返回 True ,否则返回 False 。
str.istitle()---如果字符串中至少有一个字符且为标题字符串则返回 True ,例如大写字符之后只能带非大写字符而小写字符必须有大写字符打头。 否则返回 False 。
str.isalnum()---如果字符串中的所有字符都是字母或数字且至少有一个字符,则返回 True , 否则返回 False 。
str.isalpha()---如果字符串中的所有字符都是字母,并且至少有一个字符,返回 True ,否则返回 False 。
str.isdigit()---如果字符串中的所有字符都是数字,并且至少有一个字符,返回 True ,否则返回 False 。
str.isspace()---如果字符串中只有空白字符且至少有一个字符则返回 True ,否则返回 False 。
str.startswith(prefix[, start[, end]])---如果字符串以指定的 prefix 开始则返回 True,否则返回 False。可以指定开始和结束的位置。
str.endswith(suffix[, start[, end]])---如果字符串以指定的 suffix 结束返回 True,否则返回 False。可以指定开始和结束的位置。
字符串查找:
len(str)---获取字符串的长度
str.find(sub[, start[, end]])---返回子字符串 sub 在 s[start:end] 切片内被找到的最小索引。
可选参数 start 与 end 会被解读为切片表示法。 如果未找到则返回 -1。如果 sub 未被找到则返回 -1。
str.rfind(sub[, start[, end]])---返回子字符串 sub 在字符串内被找到的最大(最右)索引,这样 sub 将包含在 s[start:end] 当中。
可选参数 start 与 end 会被解读为切片表示法。 如果未找到则返回 -1。
str.index(sub[, start[, end]])---类似于 find(),但在找不到子序列时会引发 ValueError。
str.rindex(sub[, start[, end]])---类似于 rfind(),但在子序列 sub 未找到时会引发 ValueError。
str.count(sub[, start[, end]])---返回子字符串 sub 在 [start, end] 范围内非重叠出现的次数。 可选参数 start 与 end 会被解读为切片表示法。
字符串操作:
str.split(sep=None, maxsplit=- 1)---返回一个由字符串内单词组成的列表,使用 sep 作为分隔字符串。 如果给出了 maxsplit,则最多进行 maxsplit 次拆分
(因此,列表最多会有 maxsplit+1 个元素)。 如果 maxsplit 未指定或为 -1,则不限制拆分次数(进行所有可能的拆分)。
str.rsplit(sep=None, maxsplit=- 1)---返回一个由字符串内单词组成的列表,使用 sep 作为分隔字符串。 如果给出了 maxsplit,则最多进行 maxsplit 次拆分,从 最右边 开始。
str.join(iterable)---返回一个由 iterable 中的字符串拼接而成的字符串。 如果 iterable 中存在任何非字符串值包括 bytes 对象则会引发 TypeError。 调用该方法的字符串将作为元素之间的分隔。
str.strip([chars])---返回原字符串的副本,移除其中的前导和末尾字符。 chars 参数为指定要移除字符的字符串。 如果省略或为 None,则 chars 参数默认移除空白符。
str.rstrip([chars])---返回原字符串的副本,移除其中的末尾字符。 chars 参数为指定要移除字符的字符串。 如果省略或为 None,则 chars 参数默认移除空白符。
str.lstrip([chars])---返回原字符串的副本,移除其中的前导字符。 chars 参数为指定要移除字符的字符串。 如果省略或为 None,则 chars 参数默认移除空白符。
str.replace(old, new[, count])---返回字符串的副本,其中出现的所有子字符串 old 都将被替换为 new。 如果给出了可选参数 count,则只替换前 count 次出现。
str.center(width[, fillchar])---返回长度为 width 的字符串,原字符串在其正中。 使用指定的 fillchar 填充两边的空位(默认使用 ASCII 空格符)。 如果 width 小于等于 len(s) 则返回原字符串的副本。
str.ljust(width[, fillchar])---返回长度为 width 的字符串,原字符串在其中靠左对齐。 使用指定的 fillchar 填充空位 (默认使用 ASCII 空格符)。 如果 width 小于等于 len(s) 则返回原字符串的副本。
str.rjust(width[, fillchar])---返回长度为 width 的字符串,原字符串在其中靠右对齐。 使用指定的 fillchar 填充空位 (默认使用 ASCII 空格符)。 如果 width 小于等于 len(s) 则返回原字符串的副本。
"""
print("大小写检测*********************************************")
varstr = 'I Love You And I Like You'
print(f"varstr = {varstr}")
print(f"varstr.capitalize() = {varstr.capitalize()}")
print(f"varstr.title() = {varstr.title()}")
print(f"varstr.upper() = {varstr.upper()}")
print(f"varstr.upper() = {varstr.upper()}")
print(f"varstr.lower() = {varstr.lower()}")
print(f"varstr.swapcase() = {varstr.swapcase()}")
print("字符检测*********************************************")
print(f"varstr.isupper() = {varstr.isupper()}")
print(f"varstr.islower() = {varstr.islower()}")
print(f"varstr.istitle() = {varstr.istitle()}")
print(f"varstr.isalnum() = {varstr.isalnum()}")
print(f"varstr.isalpha() = {varstr.isalpha()}")
print(f"varstr.isdigit() = {varstr.isdigit()}")
print(f"varstr.isspace() = {varstr.isspace()}")
print(f"varstr.startswith('I L') = {varstr.startswith('I L')}")
print(f"varstr.startswith('I L',0,3) = {varstr.startswith('I L',0,3)}")
print(f"varstr.endswith('I L') = {varstr.endswith('I L')}")
print(f"varstr.endswith('I L',0,3) = {varstr.endswith('I L',0,3)}")
print("字符串查找*********************************************")
# 检测一个字符串是否存在于一个字符串中
print(f"'Love' in varstr = {'Love' in varstr}")
print(f"len(varstr) = {len(varstr)}")
print(f"varstr.find('You') = {varstr.find('You')}")
print(f"varstr.find('I L',0,3) = {varstr.find('I L',0,3)}")
print("不知道为什么我这里的str.rfind()返回的是最小索引?")
print(f"varstr.rfind('You') = {varstr.rfind('You')}")
print(f"varstr.rfind('I L',0,3) = {varstr.rfind('I L',0,3)}")
print(f"varstr.index('You') = {varstr.index('You')}")
print(f"varstr.index('I L',0,3) = {varstr.index('I L',0,3)}")
print("不知道为什么我这里的str.rindex()返回的是最小索引?")
print(f"varstr.rindex('You') = {varstr.rindex('You')}")
print(f"varstr.rindex('I L',0,3) = {varstr.rindex('I L',0,3)}")
print(f"varstr.rindex('You') = {varstr.rindex('You')}")
print(f"varstr.rindex('I L',0,3) = {varstr.rindex('I L',0,3)}")
print(f"varstr.count('L') = {varstr.count('I')}")
print(f"varstr.count('L',0,7) = {varstr.count('I',0,7)}")
print("字符串操作*********************************************")
varstr1 = 'user_admin_id_123'
print(f"varstr1 = {varstr1}")
print(f'varstr1.split("_") = {varstr1.split("_")}')
print(f'varstr1.split("_",2) = {varstr1.split("_",2)}') # 就分割两次
varstr2 = 'uid=123&type=ab&kw=hh' # 要求提取到每个等号后面的内容
print(f"varstr2 = {varstr2}")
print(f'varstr2.split("&") = {varstr2.split("&")}')
res = varstr2.split("&")
for i in res:
r = i.split("=")
print(r.pop())
print(f"varstr1 = {varstr1}")
print(f'varstr1.rsplit("_") = {varstr1.rsplit("_")}')
print(f'varstr1.rsplit("_",2) = {varstr1.rsplit("_", 2)}') # 就分割两次
varstr3 = ['user', 'admin', 'id', '123']
print(f"varstr3 = {varstr3}")
print(f'"@".join(varstr3) = {"@".join(varstr3)}')
varstr4 = " 这是一个文章的标题 "
print(f"varstr4 = {varstr4}")
print(f"varstr4.strip(' ') = {varstr4.strip(' ')}")
print(f"varstr4.rstrip(' ') = {varstr4.rstrip(' ')}")
print(f"varstr4.lstrip(' ') = {varstr4.lstrip(' ')}")
varstr5 = "iloveyouyouloveme"
print(f"varstr5 = {varstr5}")
print(f"varstr5.replace('love','like') = {varstr5.replace('love','like')}")
print(f"varstr5.replace('love','like',1) = {varstr5.replace('love','like',1)}")
print(f"varstr5.center(30,'*') = {varstr5.center(30,'*')}")
print(f"varstr5.ljust(30,'*') = {varstr5.ljust(30,'*')}")
print(f"varstr5.rjust(30,'*') = {varstr5.rjust(30,'*')}")
运行结果:
E:\Programs_Way\Python\python.exe D:/Prj/Python/Study_Basic_Grammar/_32string_function.py
大小写检测*********************************************
varstr = I Love You And I Like You
varstr.capitalize() = I love you and i like you
varstr.title() = I Love You And I Like You
varstr.upper() = I LOVE YOU AND I LIKE YOU
varstr.upper() = I LOVE YOU AND I LIKE YOU
varstr.lower() = i love you and i like you
varstr.swapcase() = i lOVE yOU aND i lIKE yOU
字符检测*********************************************
varstr.isupper() = False
varstr.islower() = False
varstr.istitle() = True
varstr.isalnum() = False
varstr.isalpha() = False
varstr.isdigit() = False
varstr.isspace() = False
varstr.startswith('I L') = True
varstr.startswith('I L',0,3) = True
varstr.endswith('I L') = False
varstr.endswith('I L',0,3) = True
字符串查找*********************************************
'Love' in varstr = True
len(varstr) = 25
varstr.find('You') = 7
varstr.find('I L',0,3) = 0
不知道为什么我这里的str.rfind()返回的是最小索引?
varstr.rfind('You') = 22
varstr.rfind('I L',0,3) = 0
varstr.index('You') = 7
varstr.index('I L',0,3) = 0
不知道为什么我这里的str.rindex()返回的是最小索引?
varstr.rindex('You') = 22
varstr.rindex('I L',0,3) = 0
varstr.rindex('You') = 22
varstr.rindex('I L',0,3) = 0
varstr.count('L') = 2
varstr.count('L',0,7) = 1
字符串操作*********************************************
varstr1 = user_admin_id_123
varstr1.split("_") = ['user', 'admin', 'id', '123']
varstr1.split("_",2) = ['user', 'admin', 'id_123']
varstr2 = uid=123&type=ab&kw=hh
varstr2.split("&") = ['uid=123', 'type=ab', 'kw=hh']
123
ab
hh
varstr1 = user_admin_id_123
varstr1.rsplit("_") = ['user', 'admin', 'id', '123']
varstr1.rsplit("_",2) = ['user_admin', 'id', '123']
varstr3 = ['user', 'admin', 'id', '123']
"@".join(varstr3) = user@admin@id@123
varstr4 = 这是一个文章的标题
varstr4.strip(' ') = 这是一个文章的标题
varstr4.rstrip(' ') = 这是一个文章的标题
varstr4.lstrip(' ') = 这是一个文章的标题
varstr5 = iloveyouyouloveme
varstr5.replace('love','like') = ilikeyouyoulikeme
varstr5.replace('love','like',1) = ilikeyouyouloveme
varstr5.center(30,'*') = ******iloveyouyouloveme*******
varstr5.ljust(30,'*') = iloveyouyouloveme*************
varstr5.rjust(30,'*') = *************iloveyouyouloveme
Process finished with exit code 0