目录
1.优先掌握(索引取值,切片,len(),strip,split)
3.了解(find,index,count,center,ljust,rjust,zfill,expandtabs,captalize,swapcase,title,is)
-
类型转换
msg = str({"fz", 12})
print(msg, type(msg)) #{'fz', 12} <class 'str'>
-
内置方法:
1.优先掌握(索引取值,切片,len(),strip,split)
str1 = "hello python"
1.1按索引取值(正面取+反面取)取值:只能取(能按照索引取值,不能修改值)
print(str1[1]) # e
print(str1[-2]) # o
print(str1[5]) # 空格也算字符
1.2切片:索引的拓展应用,从一个大的字符串中,拷贝出一个子字符串(顾头不顾尾,不长)
用法1:获取字符串
str2 = str1[0: 5]
print(str2) # hello
print(id(str1), id(str2)) # 2069299827632 2069299539184
用法2:步长使用
str3 = str1[0: 5: 2]
print(str3) # hlo
用法3:反向步长
str4 = str1[5: 0: -2]
print(str4) # le
用法4:拷贝字符串:
str5 = str1[:] # 等同于str5 = str1[0: 11]
print(str5) # hello python
用法5:把拷贝字符串反转:
str6 = str1[:: -1]
print(str6) # nohtyp olleh
1.3长度len()
print(len(str1)) # 12
1.4成员运算in和not in
print("hello" in str1) # True
print("sb" in str1) # False
1.5移除字符串左右两侧的符号strip()
用法1:默认移除空格
a1 = " hello "
print(a1.strip()) # 不会改变原值
用法2:设置移除符号
a2 = "***he**llo**"
print(a2.strip("*")) # he**llo,不能去除中间的
用法3:同时设置多种移除符号
a3 = "*=+hello*&%"
print(a3.strip("*=+%&%")) # hello
应用:登陆去取空格:
user_name = "zcy"
user_password = "123456"
in_name = input("请输入你的账号:").strip()
in_pwd = input("请输入你的密码:").strip()
if in_name == user_name and in_pwd == user_password:
print("登陆成功")
else:
print("账号或密码错误")
1.6切分split():把一个字符串按照某种分隔符进行切分,得到一个列表
用法1:默认分隔符为空格:
b1 = "my name is zcy"
print(b1.split()) # ['my', 'name', 'is', 'zcy']
用法2:指定分隔符
b2 = "my:name:is:zcy"
print(b2.split(":")) # ['my', 'name', 'is', 'zcy']
用法3:指定某个分隔符
info = "zcy: 18: male"
print(info.split(":", 1)) # 第一个:后面为一个字符 ['zcy', ' 18: male']
1.7循环
c1 = "hello:zcy:15"
for i in c1:
print(i)
2.需要掌握(lstrip,rstrip,loweer,upper,startswith,endswith,str.format,split,rsplit, join,replace, isdigit)
2.1 左右移除:strip(),lstrip(),rstrip()
f1 = "****xcy***"
print(f1.lstrip("*")) # xcy*** 移除左边
print(f1.rstrip("*")) # ****xcy 移除右边
2.2 改大小写:、lower(),upper()
g1 = "AKJLzxvbs"
print(g1.lower()) # akjlzxvbs 改小写
print(g1.upper()) # AKJLZXVBS 改大写
2.3、判断开头:startswith(),endswith()
h1 = "zcy is 18"
print(h1.startswith("zcy")) # True
print(h1.endswith("18")) # True
2.4、str.format()的三种玩法
用法1:位置一一对应
j1 = "我的名字是 {} 我的年龄是{}".format("zcy", 18)
print(j1) # 我的名字是 zcy 我的年龄是18
用法2:位置自选
j2 = "我的名字是 {0}{0} 我的年龄是{1}".format("zcy", 18)
print(j2) # 我的名字是 zcyzcy 我的年龄是18
用法3:以字典方式传值,打破位置限制key=value
j3 = "我的名字是 {name} 我的年龄是{age}".format(name="zcy", age=15)
print(j3) # 我的名字是 zcy 我的年龄是15
用法4:保留几位小数点四色五入
print('{salary:.3f}'.format(salary=13.2415)) # 13.242
2.5、左右切片:split(),rsplit()
m1 = "zcy:is:18"
print(m1.split(":", 1)) # 默认左往右切 ['zcy', 'is:18']
print(m1.rsplit(":", 1)) # 右往左切 ['zcy:is', '18']
2.6、join:把 全为字符串的列表 拼接 成字符串 、
格式:"字符".join(列表)
概念:从可迭代对象中取出多个字符串,然后按照指定的分隔符进行拼接,拼接的结果为字符串
n1 = ["zcy", "is", "18"]
print(":".join(n1)) # zcy:is:18
n2 = "hello"
print("%".join(n2)) # h%e%l%l%o
2.7、更改替换:replace()
格式:replace('旧内容', '新内容')
k1 = "you can you up,no can no bb"
print(k1.replace("you", "YOU", 1)) # 不写1,默认全改 YOU can you up,no can no bb
2.8、判断字符串是否全为数字组成:isdigit()
s1 = "123456"
s2 = "12.36"
print(s1.isdigit()) # True
print(s2.isdigit()) # False
应用:判断输入账号是否为纯数字
user_name = 1840909117
in_name = input("请输入你的学号").strip()
if in_name.isdigit:
in_name = int(in_name)
if in_name == user_name:
print("登陆成功")
else:
print("学号不存在,请重新输入")
else:
print("必须输入数字")
3.了解(find,index,count,center,ljust,rjust,zfill,expandtabs,captalize,swapcase,title,is)
3.1、通过值找索引值:find(),rfind(),index(),rindex(),count()
a1 = "hello hello zcy xiangs"
find与index区别:
找到返回索引值:
print(a1.find("z")) # 返回要查找字符串在字符串中的起始索引值
print(a1.find("zcy")) # 返回要查找字符串在字符串中的起始索引值
print(a1.index("z"))
print(a1.index("zcy"))
找不到:
print(a1.find("xxx")) # 返回-1
print(a1.index("xxx")) # 程序异常"
统计子字符串出现次数:
print(a1.count("hello")) # 2
3.2、center(),ljust(),rjust(),zfill():控制输出
print("zcy".center(8, "*")) # 占8位不够*补充,内容居中
print("zcy".ljust(8, "*")) # 占8位不够*补充,内容向左对齐
print("zcy".rjust(8, "*")) # 占8位不够*补充,内容向右对齐
print("zcy".zfill(8)) # 占8位不够用0补充,内容向右对齐
3.3、expandtabs():控制制表符大小
\t为默认制表符
b1 = "hello\tword"
print(b1) # hello word
print(b1.expandtabs(2)) # hello word 控制制表符为2个
3.4、captalize(),swapcase(),title():输出大小写控制,以符号为开始判断
print("hello word".capitalize()) # 首字母变大
print("hello WOrd".swapcase()) # 字母大小反转
print("hello Wor d hi".title()) # 每个单词首字母大写
3.5、is数字系列
在python3中
num1=b'4' # bytes
num2=u'4' # unicode,python3中无需加u就是unicode
num3='四' # 中文数字
num4='Ⅳ' # 罗马数字
isdigt:bytes,unicode
print(num1.isdigit()) # True
print(num2.isdigit()) # True
print(num3.isdigit()) # False
print(num4.isdigit()) # False
isdecimal:uncicode
bytes类型无isdecimal方法
print(num2.isdecimal()) #True
print(num3.isdecimal()) #False
print(num4.isdecimal()) #False
isnumberic:unicode,中文数字,罗马数字
bytes类型无isnumberic方法
print(num2.isnumeric()) #True
print(num3.isnumeric()) #True
print(num4.isnumeric()) #True
三者不能判断浮点数
num5='4.3'
print(num5.isdigit())
print(num5.isdecimal())
print(num5.isnumeric())
总结:
最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
如果要判断中文数字或罗马数字,则需要用到isnumeric
3.6、is其他
print("zcy".isdigit()) # 判断是否纯数字
print("zCy".islower()) # 判断是否纯小写
print("zCy".isupper()) # 判断是否纯大写
print("Hello Word".istitle()) # 判断每个单词首字母是否为大写
print("asd123".isalnum()) # 判断字符串是否为 字母 或 数字 或 字母和数字 组成
print("asd".isalpha()) # 判断字符串是否为春字母组成
print(" ".isspace()) # 字符串为空格组成为true
print("print".isidentifier()) # 判断是否为内置关键字,是为true