字符串功能
万能的点
- str. :在pycharm中输入str.就会显示很多功能
upper()/lower()字母的大小写(得到的结果是str)
-
变量名.upper() 功能:将变量中字符串的英文字母变大写,但不会改变原变量内容。
eg:
value = "alex sb" new_value = value.upper() #这里注意不能只写value.upper(),因为这个功能只能进行赋值,不能改变原有变量中字母的大小写。故将其变大之后的字符串赋值给一个新的变量。 print(value,new_value)
-
变量名.lower() 功能:将变量中字符串的英文字母变小写
-
eg:
isdigit()判断str是否可以转换成int(得到的结果是bool)
-
变量名.isdigit() 如果可以转换,会输出True;如果不能转换,会输出False
-
eg:
strip(str)去除头尾(得到的结果是str)
-
strip() 如果括号内不写字符则默认为去除空白“space & tab &enter”,但是字符中间的空白不会去除
-
可以指定去除头尾两端的内容
-
tab: 制表符 ---> pycharm中用 表示
-
enter: 换行符 ---> pycharm中用 表示
-
space
-
变量名.strip() 去掉字符串左右两边的空格
-
变量名.rstrip() 去掉字符串右边的空格
-
变量名.lstrip() 去掉字符串左边的空格
-
eg:
-
eg:
name = " alex a " new = name.strip() print(new) ---> 输出结果是"alex "。alex前以及a后的空白全部被消除,但alex与a之间的空白没有被消除,因为内部空白被消除就改变了变量的内容。 指定去除头尾两端的内容: name = "al ex a" new = name.strip("a") ---> 输出结果是"l ex " 因为括号内输入了"a",所以space,tab,enter都没有被消除,只有a被消除了
-
应用场景:
# 账号:alex 密码:alex123 # alex alex123 # user = input("账号:").strip() # pwd = input("密码:").strip() # if user == "alex" and pwd == "alex123": # print("ok") # else: # print("gun")
replace(str,str,int)替换(得到的结果是str)
-
变量名.replace('xx','yy',数字) 功能:将指定变量中的xx替换为yy。括号内数字为替换的个数,按从左到右的顺序。如果不写个数,则默认全部替换
-
eg:
split(str,int)切割(返回的是列表)
-
变量名.split('字符',数字) 功能:以括号内的某个字符将变量中的完整字符串切割成部分字符,括号内数字为切割的个数,按从左到右的顺序。如果不写字符,则默认是切割空白(即space,enter,tab);可以没有数字(即不限定切割个数)
-
变量名.rsplit('字符',数字) 与split的区别在于:加完数字限定切割个数后,切割的顺序相反(从右向左)
-
eg:
-
a = "alex:alex123" lst = a.split(":") # 默认按照空格及换行符,制表符进行分割 print(lst[0]) print(lst[1]) # 这里同字符串的索引,索引是指各个字符在一个字符串里的位置,这里为列表中各个字符串在列表里的位置 ['alex', 'alex123'] 列表
-
name = "alex meet" print(name.split("e")) ---> 输出结果是['al', 'x m', '', 't']
name[int]索引:(下标)
-
name[xxx] xxx代表第几位
-
eg:
name = "meet" #0123(索引值|下标志) 从左向右 #-4-3-2-1 从右向左:这对于优先输出末尾的字符串比较方便. print(namep[0]) ---m print(namep[-4]) ---m name = "meet_alex_wusir" a = name[5] #a b = name[6] #l c = name[7] #e d = name[8] #x print(a+b+c+d) ---> alex
name[-1:3:-1]切片+步长
-
name[起始位置:终止位置+1] 不写终止位置则默认到结尾为止;不写起始位置则默认从头开始
-
name = "meet_alex_wusir" a = name[5] #a b = name[6] #l c = name[7] #e d = name[8] #x print(a+b+c+d) or print(name[5:9]) 注意:[起始位置:终止位置+1] 顾头不顾腚,所以腚的位数要+1 如果不写终止位置,即[起始位置:],则会从起始位置输出至完. 如果要输出wusir: print(name[-5:]) 这里如果写-5:-1则最后一位不会输出,然而他的最后一位还不能+1,因为0是正数的第一位,-1是反数的第一位。所以只能不写,让他输出至完。 如果要输出e_l: print(name[2:7:2]) 步长:写在最后,不写时默认为一。此时为2,意为一次跨两步,即输出2,4,6。 print(name[-1:3:-1]) ---> 输出结果:risuw_xela_ 顾头不顾腚,所以没有t。当步长为负数时顺序就变成了从右到左。 因此,补偿可以控制查找方向
总结:
- 索引时,如果超出最大索引值会报错
- 切片时,如果超出最大切片值不会报错
- 索引和切片只能给有序数据类型使用
id(str)
-
字符串--str
有序:索引
不可变:内存地址
# name = "meet" # print(id(name)) # name = name + "最帅了" # print(id(name)) ---> 两个id是不一致的 # name = "meet" # name1 = "meet" # print(id(name)) 两个id是一致的 # print(id(name1)) # 小数据池 -- 驻留机制
startswith(str)/endswith()开头/结尾(支持切片)
统计count(str/int)(接受切片)
- name = "meet_alex"
- print(name.count("e")) --> 3
- print(name.count("ee")) --> 1
is系列
- print(name.isalnum()) #判断变量是否是由数字,字母,汉字组成
- print(name.isalpha()) #判断变量是否是由字母,汉字组成
- print(name.isdigit()) #判断变量是否是阿拉伯数字 ⑤:这个也是True,是个BUG
- print(name.isdecimal()) #判断是不是十进制,返回的是布尔值
len(str)字符串长度
-
方法: # a = 123132 # print(len(a)) #-- str,dict,list...公共方法 (获取长度) """ a l e x """ # count = 0 # while count < len(name): # print(name[count]) --->a ,l ,e ,x # count += 1