字符串定义:
用来记录事物状态的性质:
比如:名字
name = 'Tom'
字符串特性:
不可变!
字符串:可以通过索引取子字符,也是字符串。
字符串无论符号、数字还是文字,都可以使用内置方法,字符串文字不会发生变化,类型依然属于字符串
1、需要掌握的功能
1.1、strip,lstrip,rstrip
str.strip() 括号中可以没有参数,默认清除空格,如果有参数,则清除参数值(参数不带空格,不清除空格)
msg = " ****helle**** "
print(msg.strip()) #去除空格
print(msg.lstrip()) #去除左边空格
print(msg.rstrip()) #去除有点空格
print(msg.strip(" *")) #去除空格和符号
"""
****helle****
****helle****
****helle****
helle
"""
1.2、lower ,upper
msg = "Hello"
print(msg.upper())#全部变成大写
print(msg.lower())#全部变成小写
"""
HELLO
hello
"""
1.3、startswith,endswith
msg = "nihaoa"
print(msg.startswith("ni")) #判断开头是否为ni
print(msg.endswith("a")) # 判断结尾是否为a
"""
True
True
"""
print("my name is %s age is %s"%("engo",18)) #位置固定
# my name is engo age is 18
print("my name is {x} my age is {y}".format(x="egon",y=18)) #可以赋值
#ma name is egon my age is 18
print("my name is {} my age is {}".format("egon",18,20))#不赋值则顺序填充,多一个值不报错,会根据有几个字符串格式化占位符,然后使用几个format后面的值,顺序赋值
# my name is egon my age is 18
print("my name is {0} my age is {1} 今年{1}".format("egon",18)) #花括号中填写数字取值为format中的索引,此方法format参数少于占位符也不会报错,按照索引取值可以重复取到值
# my name is egon my age is 18 今年18
x = 111
y = 222
print(f"my name is {x} my name is {y}") # f 的字符格式化,提前定义变量
# my name is 111 my name is 222
1.5、split(默认左到右切片),rsplit(右切片)
找不到切片参数不会报错,输出原本字符串
msg = "x,y,z,b"
print(msg.split())#split无参数,按照空格切片,没有空格则不会切片
# ['x,y,z,b']
print(msg.split(",")) #有参数按照所给参数的符号切片
# ['x', 'y', 'z', 'b']
print(msg.split(",",1)) #左到右切一次
# ['x', 'y,z,b']
print(msg.rsplit(",",1)) #右到左切一次
# ['x,y,z', 'b']
1.6、join (可以拼接字符串,列表,元组)
join 拼接字符,需要赋值给全新的一个变量名
join 拼接列表,全为字符串,存在数字报错
join 也可以连接元组,全为字符串,存在数字报错
# 拼接输出结果为字符串类型
print(":".join(["aaa", "bbb", "ccc"])) # 根据句点符前面的""中字符拼接字符串
# aaa:bbb:ccc 返回类型:字符串
name = ("aaa","bbb","123")
print("-".join(name))
# aaa-bbb-123
name ={"nihao":"wohao","aaa":"ccc"}
print("-".join(name)) #字典拼接为默认键的拼接
# nihao-aaa
name1= {'xiaoming':"18",'xiaohua':"20"}
print('+'.join(name1.values())) #拼接为键后的值 1820 拼接整型会报错
1.7、replace(字符串切换,不改变原字符)
会受到空格的影响,字符中间有空格,则判定不符合切换条件
msg = " egon is hhh egon xx egon"
print(msg.replace("egon","EGON")) # 默认把前面值全部改成后面的值
# EGON is hhh EGON xx EGON
print(msg.replace("egon","EGON",1)) # 后面带数字,修改具体数量参数
# EGON is hhh egon xx egon
1.8、isdigit:判断字符串是否数字组成
isdecimal() :判断字符串是否数字组成 (建议)
msg = "123"
print(msg.isdigit()) #判断字符串是否数字组成 True
number = "①"
print(number.isdigit()) # True
print(number.isdecimal()) # False
2、需要了解的功能
2.1、find(找字符,返回索引值) ,rfind(从右找字符,返回索引值) , index (找不到报错), rindex , count(统计字符串的出现次数)
msg = "hello egon xxx egon yyy egon zzz"
print(msg.find("egon",0,7)) # 查找值在哪个位置 找不到返回 -1 ,后可跟查找范围
# -1
print(msg.find("egon",0,10))
# 6
print(msg.find("egon")) #不规定查找范围,全部查询
# 6
print(msg.rfind("egon")) #从右开始查找
# 24
print(msg.index("egon")) #查找,找不到报错
# 6
print(msg.rindex("egon")) #从右开始查找,查不到报错
# 24
print(msg.count('x')) # 统计字符串的出现次数
# 3
2.2、center(居中),ljust(左对齐).rjust(右对齐),zfill(指定范围,用0填充)
print("nihao".cenetr(50)) # 50范围内剧中
# nihao
print("nihao".center(9,"*"))
# **nihao**
print("nihao".ljust(50)) # 50范围左对齐 ,填充空格
print('nihao'.ljust(50,"*")) #50范围字符串左对齐,填充 * 在右
print("nihao".rjust(50)) # 50范围字符串右对齐 ,填充 * 在左
print("nihao".rjust(50,"*"))# 50范围右对齐,填充"*"
print("nihao".zfill(10)) # 50范围左边填充0
# 0000000000nihao 类似rjust
3.3、captalize(单词首字母变大写,其他前部改成小写),swapcase(小写变大写,大写变小写),title(每个单词首字母大写,其余小写)
msg = "nihao shijie"
print(msg.capitalize()) #只有第一个字母变成大写 Nihao shijie
msg1 = "Ni Hao" # 两极反转,大小写互换
print(msg.swapcase()) #nI hAO
msg2 = "ni hao"
print(msg2.title()) # Ni Hao
3.4、is 数字系列
isdigit() #变量值是字节串或者字符串类型并且包含的阿拉伯数字,结果才为真
isdecimal()#变量值是字符串类型并且包含的阿拉伯数字,结果才为真
isnumeric() #阿拉伯数字,中文数字,罗马数字,结果都为真
number1 = b"4"
number2 = "4"
number3 = "四"
number4 = "Ⅳ"
print(number1.isdigit()) #True
print(number2.isdigit()) #True
print(number3.isdigit()) #False
print(number4.isdigit()) #False
print(number2.isdecimal()) #True
print(number3.isdecimal()) #False
print(number4.isdecimal()) #False
print(number2.isnumeric()) #True
print(number3.isnumeric()) #True
print(number4.isnumeric()) #True
3.5、 is其他
isalnum()#判断字符串字母数字组成
msg = "nihao123"
print(msg.isalnum) # True 带空格或者其他字符都会报错
isalpha()#判断字符串字母组成
msg = "Nihao"
print(msg.isalpha()) # True 带空格会报错
islower()#判断是否全部小写组成,带空格或者字符也为真
msg = 'a bcd'
print(msg.islower()) # True
isupper()#判断是否全部大写组成,带空格或者字符也为真
msg = 'ABC D'
print(msg.isupper()) # True
字符串总结:
存一个值,有序,不可变类型