Python字符串str---格式化与判断
python十四课时-字符串
字符串是由零个或多个字符组成的有限序列,每个字符都是单独的。
不可变(变量名指向新的变量值空间),有索引,有切片,可遍历
不可变
python与java都不可更改
类似java中的hashmap(java中的基础部分)也不能被改,考虑到安全性,性能
有索引
s[7]
可切片
s[2:7]
可遍历
for i in s:
….
面向对象编程
类似java c++都是面向对象编程
现实世界中的每一个物品都是一个对象。并且都有他自己的属性,也可以说一切皆对象
比如手机可以装app,笔可以写字,纸可以被记录
每一个变量都是独立存在的对象
26是数字类 Alex是字符串类 …..
统一类型下,操作相同。比如字符串可以打印,输出,格式化,切片
类class和对象def
类是蛋糕模型,class和def
对象带有属性name age和行为print 等….
class dog:
def __init__(self,name,age):
self.name=name
self.age=age
def bark(self):
print(f'{self.name} is barking')
my_dog=dog('dog1',18)
my_dog.bark()
狗的名字和年龄是属性,行为是barking(print)
字符串格式化
#首字母大写
s='jack'
s.capitalize()
Jack
#将字符串全部改小写
s1='Alex li'
s2='alex li'
s1=s2 #false
s.casefold()=s2 #True
#两边填充,居中打印
s='alex'
s.center(50,'-') #填充50个字符,其余填充不足用‘-’
'-----------------------alex-----------------------'
#tab键拓宽(不常用)
#一般在字符串中 \n是翻页,\t是tab间隔并且有四个间隔
s='alex\tli'
s.expandtabs(8)
'alex li'
#还可以用help(s.expandtabs) 获取帮助
#左填充 右填充
s='alex'
s.ljust(50,'-') #左left
'alex----------------------------------------------'
s.rjust(50,'-') #右right
'----------------------------------------------alex'
#全部小写 类似casefold
s2='JAck'
s2.lower()
'jack'
#大小写交换
s='ALex Li'
s.swapcase()
'alEX lI'
#单词首字母大写
s='alex li'
s.title()
'Alex Li'
#全部大写
s='alex'
s.upper()
'ALEX'
#字符串为空的地方填0,一般适用于网络通信
s='alex'
s.zfill(50)
'0000000000000000000000000000000000000000000000alex'
#两边去死皮(空格) 右边去 左边去
s=' jack ma \n '
s.strip()
'jack ma'
s.rstrip() #右边right
' jack ma'
s.lstrip() #左边left
'jack ma \n '
#引入后续变量,类似printy中的f
#可以是变量名,也可以是变量位置
msg='my name is {name} and my age is {age}'
msg.format(name='alex',age=19)
'my name sis alex,and my age is 19'
msg1='hello {0},my age is {1}'
msg.format('world',19)
'hello my world my age is 19'
字符串判断
#判断字符串开头和结尾
#通常用来判断电话号码
s1=1145141919810
s1.startswith('1145') and s1.endswith('9810')
True
#判断是否为字母
s='alex1'
s1='alex'
s.isalpha()
False
s1.isalpha()
True
#判断是否为数字
s='123'
s.isdigit()
True
#只能判断字符串
s1=123
s1.isdigit()
error
#并且不能判断小数
s2=1.23
s2.isdigit()
False
#判断是否为字母和数字
s1='abc123'
s1.isalnum()
True
s2='123'
s1.isalnum()
True
#是否为ascii码(暂时不用)
s.isascii()
#判断是否为小数(非常不用,)
s.isdecimal()
#判断是否可以做合法的变量名
dd='ss'
dd.isidentifier()
True
#数字再前面不能做变量名
s1='2name'
s1.isidentifier()
False
#是否为小写,其中包含数字也可以
s1='2name'
s1.islower()
True
#判断是否为大写
s1='THE FIRST MAN'
s1.isupper()
True
#是否为数字同isdigit效果,进阶版(不常用).也识别中文数字和欧洲数字
s='123'
s.isnumeric()
True
s1='二十五'
s1.isnumeric()
True
#是否可以打印
age='18'
age.isprintable()
True
#是否为空格
' '.isspace()
True
#判断是否首字母大写(全部大写也不行)
s1='The Firsr Chairman In China'
s1.istitle()
True
字符串的查改删算
#字符串查找,可切片,可从右侧查找
s='The First Chairman In China'
s.find('i')
5
#find会寻找从左侧开始的需要寻找的字符串。并且只有一个
#如果需要寻找另一个可以进行切片(可通过help(s.find)寻求帮助)
s.find('i',6,-1)
13
#从右侧查找
s.rfind('i')
24
#字符串查找2
#index类似find,主要区别在于如果索引到不存在的数值,find不会报错(-1),index会报错
s.index('i')
s.index('i',6,-1)
#从右边索引
s.rindex()
#查找符合条件字符串的个数
s='The First Chairman In China'
s.count('i')
3
#可切片(可通过help(s.count)获取帮助)
s.count('i',6,-1)
2
#根据空格分割字符串
s='The First Chairman In China'
s.split()
['The', 'First', 'Chairman', 'In', 'China']
#根据符合条件的字符串进行转换列表
s.split('i')
['The F', 'rst Cha', 'rman In Ch', 'na']
#可以限制分列表的个数
s.split('i',maxsplit=2)
['The F', 'rst Cha', 'rman In China']
#也可以从右边切
s.rsplit('i',maxsplit=2)
['The First Cha', 'rman In Ch', 'na']
#根据换行分割字符串
s1='hello\neveryone\nhahaha\nddd'
print(s1)
hello
everyone
hahaha
ddd
#将每行作为一个元素加入列表
s.splitlines()
['hello', 'everyone', 'hahaha', 'ddd']
#去首去尾
s='The First Chairman In China'
s.removeprefix('Th')
'e First Chairman In China'
#去尾
s.removesuffix('China')
'The First Chairman In '
#字符串替换(重要)
s='The First Chairman In China'
s.replace('china','Vietnam')
'The First Chairman In Vietnam'
#也可限制最大修改数
s.replace('i','I',2)
'The FIrst ChaIrman In Vietnam'