# 按字母表熟悉下string中的方法
# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
# 标红的为常用重点的方法!!
str = "tanGwei nI hao 你好 "
###### A ##################
# 无
###### B ##################
# 无
###### C ##################
print(str.count("a")) # 查找字符个数
print(str.count("a", 0, len(str))) # 从索引0开始查找到最后一个字符中查找"a"
print(str.capitalize()) # 首字符大写
# casefold和lower的区别
str1 = "I Love Python"
str2 = "Groß - α" # 德语 大写α
print(str1.casefold())
print(str1.lower()) # 只能在ASCII中大小写转换
print(str2.casefold()) # 在非ASCII中也能将大写转小写
print(str2.lower())
print(str.center(100, "-")) # 用-补齐100个字符,并且将文本居中
###### D ##################
# 无
###### E ##################
print(str.encode()) # utf-8编码,返回成字节码格式
print(str.encode().decode()) # utf-8编码字节码格式解码
print(str.endswith("ei", 1, 7)) # 判断从开始到结束的切片内是否以某字符(串)结尾,1和7可以不写默认即查找整串,和startswith()是一对方法
str1 = "this is string example....wow!!!";
# 把字符串中的 tab 符号(' ')转为空格,tab 符号(' ')默认的空格数是 8。(唐玮备注:但是我实际打印的时候感觉没有8个空格)
print(str1.expandtabs())
###### F ##################
print("{1} {0} {1}".format("hello", "world")) # 设置指定位置
print("网站名:{name}, 地址 {url}".format(name="新浪", url="www.sina.cn"))
site = {"name": "新浪", "url": "www.sina.cn"}
print("网站名:{name}, 地址 {url}".format(**site)) # 用字典赋值,唐玮备注:这里面的**是什么意思?
print("网站名:{name}, 地址 {url}".format_map({"name": "新浪", "url": "www.sina.cn"})) # 用字典赋值的另外一种写法
my_list = ['新浪', 'www.sina.cn']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # 用列表赋值,"0" 是必须的
print("{:.2f}".format(3.1415926)) # 数字格式化 参考:https://www.runoob.com/python/att-string-format.html
print("tanGwei nI hao 你好 ".find("hao", 1, 2)) # 检测字符串从索引1到索引2中是否包含子字符串,有返回索引,没有返回-1
###### G ##################
# 无
###### H ##################
# 无
###### I ##################
print("tanGwei nI hao 你好 ".isdigit()) # 判断是否为数字
print("tanGwei nI hao 你好 ".index("你好")) # 查找返回字符和字符串的索引,找不到会报错
print("111a".isalnum()) # 检测字符串是否由字母和数字组成。
print("111a".isalpha()) # 检测字符串是否只由字母组成。
print("11".isnumeric()) # 检测字符串是否是数字组成
print("aaaaaa万".isascii()) # 检测字符串是否只有ASCII码中的字符组成,3.7后的新功能
print("11".isdecimal()) # 检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。
print("a11".isidentifier()) # 检查字符串是否是合法变量标识符,只能用字母数字和下划线的组合并且不能用数字开头
print("a11A".islower()) # 检查字符串是否全部小写
print("AAA A".isupper()) # 检查字符串是否全部大写
print(" ".isprintable()) # 是否是可以打印的字符
print("Aaa Aa".istitle()) # 是否是标题,每个单词首字母都要大写
###### J ##################
print("+".join(["11", "11"])) # 用+号间隔后面的可迭代对象(字符串 字典 列表等)
###### K ##################
# 无
###### L ##################
print("AAA".lower()) # 字符串转小写
print("aaa".upper()) # 字符串转大写
print("aaa".ljust(50, "-")) # 返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串
print("aaa".lstrip("b")) # 消除左边的空字符,如果给定了参数,则变成删除此字符
print(len("aaa")) # 返回字符串字符数量
###### M ##################
print("a person".translate("abcdefg".maketrans({"a": "1", "e": "2"}))) # 对称加密
###### N ##################
# 无
###### O ##################
# 无
###### P ##################
print("a,per son".partition(",")) # 方法用来根据指定的分隔符将字符串进行分割。如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
###### Q ##################
# 无
###### R ##################
print("a,per son ,".rstrip(",")) # 删除右边的空字符或者一个具体的字符
print("a,per son a, a aa".replace("a", "b", 3)) # 用b替换a,最大次数不超过3次
print("aaaabbbbccccc".rfind("b", 1, 10)) # 从索引8(不含)开始从右向左找,返回"b"的第一次出现的位置
print("aaaabbbbcccccbcb".rstrip("b")) # 从右边将某字符去掉,不写参数"b"就是去掉空字符
print("aaaabbbbcccccbcb".rindex("b")) # 从最右边开始,从右向左找,将指定字符串的索引返回,bigin和end参数和rfind是一个道理
print("aaa".rjust(50, "-")) # 返回一个原字符串右对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串
print("a-a-a".rpartition("-")) # 方法用来根据指定的分隔符将字符串进行分割。如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
print("a-a-a".rsplit("-")) # 从右边开始用某个指定的分割符号分割字符串
###### S ##################
print(" a-a-a ".strip()) # 去头尾部的空字符
print("a-a-a".split("-")) # 用某个字符串分割
print("a-a-a
a".splitlines()) # 用换行符分割,这是因为linux和windows的换行符不同,所以用这个方法就不需要考虑操作系统问题
print("aba-a- a".startswith("b")) # 判断是否以某字符串开头,和endswith()是一对方法
print("aba-a- A".swapcase()) # 大写转小写,小写转大写
###### T ##################
# translate() 对侧加密,参考前面的例子
print("aba-a- A".title()) # 标题格式,首字符大写
###### U ##################
# upper() 转大写 参考前面
###### V ##################
# 无
###### W ##################
# 无
###### X ##################
# 无
###### Y ##################
# 无
###### Z ##################
print("aba-a- A".zfill(100)) #左边补0,这个是在16位的数据用的