字符串方法:
1、capitalize() ---->首字母大写
2、casefold() --->大写转小写,可以处理特殊的大小写对应关系
3、lower() ---》简单的大写转小写
4、center(self,width,fillchar=None)
width ---》设置宽度,并将内容居中
fillchar---> 空白填充字符 (只能一个字符)
例:tes t= "gcx"
v = test.center(20)
print(v)
打印结果:10个空格gcx10个空格
若:v = test.center(20," * ")
结果:**********gcx**********
ljust(self,width,fillchar=None) --->字符串放在左边,后面加填充字符
rjust(self,width,fillchar=None) ---》字符串放在右边,后面加填充字符
zfill(width ) --->字符串放右边,默认以数字零填充
5、count(self,sub,start=None,end=None)
sub ---> 要统计出现次数的字符(子序列)
start、end ---》开始位置结束位置
6、endswith(self,suffix,start=None,end=None) --->判断是否以XXX结尾并返回一个布尔值
startswith() --->以XXX开头
7、find(self, sub,start=None,end=None) ----> 从起始位置开始找,找到第一个之后,获取其下标
返回 -1 表示没有找到
注意:若有start 和 end 参数 表示在范围(start=< X < end)里面找sub
8、format(*args,**kwargs) ---> 格式化,加一个字符串中的占位符替换为指定的值
例:test =" my name is {name},age {age}"
print(test)
打印结果:my name is {name},age {age}
v = test.format(name='gcx',age=24) 也可以写成 v = test.format( **{“name” : "gcx" , "age" : 24} )
print(v)
打印结果:my name is gcx,age 24
扩展:test = 'I am {0}, age {1}' ----->必须以 0 开始,这样写之后系统会自动按顺序对应参数值
v = test.format('gcx', 24)
print (v)
打印结果:I am gcx,age 24
9、format_map(self,mapping) ----> 与format的作用相同仅仅只是传参的形式不同
例:test =" my name is {name},age {age}"
v = test.format_map({"name" : 'gcx', "age" : 24}) ---》以字典形式传入
10、index( self, sub, start=None,end=None ) ---> 获取sub在字符串中的索引,如果没有程序会报错(注意与find的区别)
11、isalnum(self) ---> 判断字符串中只是包含字母和数字(纯字母、纯数字、字母数字混合),并返回一个布尔值(true or false)
12、expandtabs( n) --- > 从起始位置开始以n个字节为步长开始寻找制表符(/t),遇到制表符就暂停,不足n位以空格补齐。
13、isalpha(self) ----> 判断字符串里面是否只包含字母汉字,并返回一个布尔值
14、isdigit()、isdecimal() 、isnumeric() --> ---->判断字符串是否只包含数字,并返回一个布尔值
isdecimal ---->十进制小数
isdigit ----> 不支持中文形式的数字如:二
isnumeric ---> 支持中文
isdigit() ---》能识别各种数字形式
15、swapcase() --->大小写转换
16、isidentifier() --->判断字符串是否满足变量的命名规则(字母、数字、下划线构成,数字不能开头、不能纯数字)并返回一个布尔值
17、islower() ---> 判断是否是小写
lower( ) --->将字符串转换成小写
isupper() ---》判断是否全部为大写
upper() ---》 转换成大写
18、isprintable() -->如果字符串里面的字节都能打印出来则输出为true,否则为false,如:/n 、/t 换行符、制表符
19、isspace() --->判断一个字符串里面是否全部是空格
20、title() ----》把字符串里面的内容转换成标题的形式(首字母大写)
istitle() ----》判断暖字符串是否满足首字母大写的形式。
21、join(self, iterable) --->将字符串中的每一个元素按照指定的分隔符进行拼接
例:test = "你是风儿我是沙"
print (test)
t = "_"
v = t.join(test)
print (v)
打印结果:你是风儿我是沙
你_是_风_儿_我_是_沙
22、不加参数chars时表示:
lstrip(self, chars=None) ----->去掉字符串左边的空格 、换行、制表符(/t)
rstrip(self, chars=None) ---->去掉字符串右边的空格 、换行、制表符(/t)
strip(self, chars=None) ---->去掉一个字符串里面的空格、换行、制表符(/t)
加上参数chars表示去掉指定的参数字符
例:test = "xalex"
v = test.lstrip("x")
print (v)
打印结果:alex
例:test = "xalex"
v = test.rstrip("axa")
print (v)
打印结果:ale
注意:执行的时候回自动匹配参数里面包含的字符,不一定要整个子序列全部匹配,先进行最多匹配(最长公共子序列)
23、maketrans(self, *args,**kwargs) ---->创建字符串的对应关系
translate(self, table) ---> 把字符串按照设定的对应关系,进行替换操作
例:v = "aeiou"
m = str.maketrans("aeiou" , " 12345" )
new_v = v.tanslate(m)
print(new_v)
打印结果:12345
24、
partition(self,sep) ----> 按照字符串中出现的第一个sep参数(从左边往右找)分割字符串为 子字符串(永远是3份,sep参数被单独分割出来)
rpartition(self,sep) ----> 与partition不同的是从有往左边找第一个出现的sep参数进行截取
split (self , sep=None, maxsplit= -1) -------> maxsplit表示按照sep分割的次数,且分割后sep是被去掉的,使用split进行切割生成的结果是一个列表
splitlines(self,keepends=None) --->只能根据字符串中的换行符(/n)进行切割,切割成子字符串,可以加入true、false参数来决定是否在子字符串中保留换行符
例:计算字符串 "5+9" 的值
value = "5+9"
v1 , v2 = value.split("+") -----> 直接把分割后的值赋值给V1 , V2
v1 = int(v1) ---->字符串转成整型格式
v2 = int(v2)
25、startswith(self,prefix,start=None,end=None) -----> 判断字符串是否是以prefix参数开头 ,并返回布尔值,
endswith (self,prefix,start=None,end=None) ---》 判断字符串是否以XXX结尾
26、swapcase() ---》把字符串中的大写换成小写,小写换成大写
27、replace() --->替换字符串里面的指定字符
例:test = "alexalexalex"
v = test.replace("ex" , "bb") ----》 把字符串中所有的 ex 替换成 bb
或者
v = test.replace("ex", "bb", 1) ------>只把第一个 ex 替换成 bb
从字符串中取元素:
test = "learning"
v = test [0:2] ---> ( 0 =< X < 2 ) 如果是[0 : -1] 则表示除最后一个全部取出,最后一个字符 -1,倒数第二个字符 -2,以此类推......
print (v)
打印结果:le
在Python3中:
len() ----》获取字符串的长度,如传入 learning 则结果为: 8,如传入字符串“郭晨希”则结果为 3
获取列表元素(逗号分隔)的个数
在Python2中:
len("郭晨希") ----》 结果为 9(因为在utf-8编码中一个中文有三个字节)
输出字符串中的字符与索引:
test = input("请输入:")
v = range (0,len(test))
for item in v:
print(item , test[item])
range函数可以按照指定规则创建连续的数字
range(0,100)---》 输出0 --99
range(0,100,5)---》输出:0、5、10、15........ (5表示步长)
range (100,0,-1) -----> 输出:100、99、98.........
在python3中:
range(100) ----》只有在for循环中调用range时才会创建 0---99(一个一个的创建)
在Python2中
v = range(100) ---> 直接就在内存中创建了 0--99
v = xrange (100) ---> 相当于Python3中的range,只有在用for循环时才被创建
字符串一旦被创建就不可在原内存里面修改,如果修改或者拼接就会在内存中开辟新的空间生成新的字符串。
必须要掌握的方法:replace / find /join /strip / startswith / split / upper / lower / format
字符串格式化
一:
例1: s = "my name is %s ,age %s " %("gcx" , 24) ---->注:%s 表示此处是一个字符串,如果后面参数传入时对应的不是字符串类型,系统会自动把参数转换成字符串的类型
print (s) ------>打印结果:my name is gcx ,age 24
%s ---- > 字符串 如果写成 %.4s的形式则表示对后面传入的字符串截取4位进行显示
%d -----> 整数
%f -----> 浮点数(默认保留6位小数)
如果想保留2位小数要写成: %.2f
如果想要打印出 百分号 前面要写成 : %.2f %%
例2:v = "I am %(name)s ,age %(age)d" %{"name" : "gcx" ,"age" : 24}
例3:print ('root','x','0' , sep = ' : ') ---->打印结果:root:x:0 其中“sep”用来指定分隔符
例4: msg = “I am %(name)-60s ,age 24” %{"name" : "gcx"}
从name开始占60个字符,name在60个字符位置中靠左对齐
使用format格式化字符串
例1:s = "i am {}, age{},hobby{}" .format("gcx", 24, "study")
注意:使用以上格式要注意 format 方法里面的参数要与前面的 {} 一一对应,不对应则会报错
例2:s = "i am {2}, age{1},hobby{0}" .format("gcx", 24, "study")
s = "i am {1}, age{1},hobby{1}" .format("gcx", 24, "study")
注意:以上两种格式都是正确的程序不会报错,当前面以索引的形式存在,format提供参数的时候可以不一一对应,但前面花括号的索引值 不能超过format元组参数的索引值范围。
例3:s = "I am {0[0]} , age{0[1]},really{0[2]}".format([0,1,2],[3,4,5])
打印结果:i am 0,age1,really2
例4 :s = "I am {:s},age{:d},money{:f}".format("seven",18,99999.99)
例5:s = "I am {:s},age{:d}".format(*["seven",18])
例6:s = "numbers: {:b},{:o},{:d},{:x},{:X},{:%}" .format(14,14,14,14,14,14.58672 , 2)
注:使用这种格式程序会自动把format里面的参数按顺序传入前面的花括号,然后按照花括号里面的格式进行类型的转换(format里面的参数多了没关系,但如果少了就完不成一一对应,系统就会报错)
b ---> 表示二进制
o --->表示八进制
x ---> 表示英文字母小写的十六进制 (如:a 表示11)
X ---> 表示英文字母大写的十六进制 (如:A 表示11)
% ----> 表示已 %数的形式表示(默认保留6为小数)