不同数据类型的处理函数(一)
紫色部分使用率是非常高的,尽量掌握。以下例程以python3为例,2.x略有差别。
python中处理数据函数有很多很多种,作为使用者没有必要完全掌握,掌握一个原则:“会用就行”,一些不常见的函数能够随时“学会使用”就可以了。
1.处理数字的函数非常多,但是一般情况下数字只是用于计算,只需要掌握.bit_length()就可以。
x.bit_length() 功能:用于计算x转换为二进制后的位数,x为int型
v1=3 v2=v1.bit_length() print(v2) #3换成二进制是11,所以输出是2 v3=4 v4=v3.bit_length() #4换成二进制是100,所以输出是3 print(v4)
v5=255 #255换成二进制是1111 1111,所以输出是8
v6=v5.bit_length()
print(v6)
输出:
2
3
8
注意:若x为str型,报错
2.处理字符串函数。
x.capitalize() 功能:将首字母大写
v1="abc" v2=v1.capitalize() print(v2)
输出:Abc
注意:若x为int型,结果不报错,但是没有任何意义。
x.casefold() 功能:将x中所有的大写字母小写
v1="AbC" v2=v1.casefold() print(v2)
输出:
abc
.center() 作用:按照设定的总长度居中,并且可用任意字符补充其余位置,缺省值默认为空格。
原形为:center(self, *args, **kwargs)。括号中第一部分可以忽略,第二部分为总长度,不能缺省,第三部分为填充其余位置的字符,缺省值默认为空格。
v1="AbC" v2=v1.center(20,"#") print(v2) v3="AbC" v4=v3.center(20) print(v4)
输出:
########AbC#########
AbC
注意:第三部分必须是一个字符,如果是大于一个字符,提示报错The fill character must be exactly one character long
,意思是所占位置必须是一个字符长度。在python中,没有“字符”的定义,一个字符也是字符串,这里为了方便理解,称为字符。
x.ljust() 作用:字符串左居中,总长度须设定,空余位置用设定字符补齐。
v1="abc" v2=v1.ljust(10,"*") print(v2)
输出:abc*******
x.rjust() 作用:字符串右居中,总长度须设定,空余位置用设定字符补齐。
x.zfill() 作用:字符串右居中,总长度须设定,其余位置强制0补齐。
x.casefold()
x.lower()
作用:将x中所有字符小写。
v1="AbC" v2=v1.casefold() print(v2) v3="AbC" v4=v3.lower() print(v4)
输出:
abc
abc
虽然两者作用看似相同,但是作用范围略有区别。casefold()作用范围更广,可以将大写英文字母之外的其他字符也转为小写,比如希腊字符等。lower()是将大写英文字母转为小写字母。所以,日常使用,我们只需要记住casefold()即可。
x.upper() 作用:将x中所有字符转为大写。
x.swapcase() 作用:将字符串中所有大写转小写,小写转大写,其他字符不变。
v1="_abC" v2=v1.swapcase() print(v2)
输出:
_ABc
x.count() 功能:寻找子序列出现的次数。(计算x中某一个或几个连续字符出现的次数。)
函数原形:count(self, sub, start=None, end=None) 后两项可以省略。
v1="AbCAbCAbC" v2=v1.count("Ab") #Ab出现了3次,所以输出为3 print(v2) v1="AbC" v2=v1.count("AC") #AC虽然出现了3次,但是AC并不连续,所以输出为0 print(v2)
输出:
3
0
v1="AbCAbCAbC" v2=v1.count("Ab",3) print(v2) v1="AbCAbCAbC" v2=v1.count("Ab",4) print(v2)
输出:
2
1
start的意思是起始位置,start=3时,重复次数是2,start=4时重复次数是4,说明第一个A的位置不是0,而是1。
v1="AbCAbCAbC" v2=v1.count("Ab",3,7) print(v2) v1="AbCAbCAbC" v2=v1.count("Ab",3,8) print(v2)
输出:
1
2
end是结束位置,end=7时,重复1次,end=8时重复2次。7的位置是第三个b,8的位置是第三个C,所以起始位置包含start,不包含end。可以理解为高中所学的“区间”概念,左闭右开。
注意:类似的,在原型中有=none的都是可以省略的。
x.endswitch() 作用:检测是否以某一个字符串结束,返回值是布尔型,即true false。
v1="ABC" v2=v1.endswith("C") print(v2) v1="ABC" v2=v1.endswith("D") print(v2)
v1="ABCDE"
v2=v1.endswith("CE") #CE不连续,所以输出是false
print(v2)
输出:
True
False
False
x.startswitch() 作用:检测是否以某一个字符串开始,返回值是布尔型,即true false。和x.endswitch() 用法一致。
x.find()作用:寻找子序列是否存在。如果不存在,返回值为-1;如果存在,返回值是所在位置。第一个位置是0
v1='abcabc' v2=v1.find('bc') print(v2) v1='abcabc' v2=v1.find('ca') print(v2)
输出:
1
2
x.find()函数还可以设置查找启示和停止位置。同样遵循左闭右开的原则。
v1='abcabc' v2=v1.find('bc',1,2) print(v2) # 输出: -1 v1='abcabc' v2=v1.find('bc',1,3) print(v2) # 输出: 1
index函数和find()函数功能一样,都是寻找;但是当找不到时,find()的返回值是-1,index()报错。
x.format 作用:替换指定字符
v1="{XXX}棒棒哒 每天{age}岁" print(v1) v2=v1.format(XXX="王栋轩",age="18") print(v2)
输出:
{XXX}棒棒哒 每天{age}岁
王栋轩棒棒哒 每天18岁
在v1中,需要代替的字符串用大括号{},括起来。也可以不用写“XXX”和“age”,用占位符表示,从0开始。
v1="{0}棒棒哒 每天{1}岁" print(v1) v2=v1.format("王栋轩","18") print(v2) #输出:王栋轩棒棒哒 每天18岁
另外一种书写方式:
v1="{xxx}棒棒哒 每天{age}岁" print(v1) v2=v1.format_map({"xxx":"王栋轩","age":"18"}) print(v2)
不同的是,传入的值是{"xxx":"王栋轩","age":"18"}
另外一个替换的函数是replace()
v1="XXX棒棒哒,XXX美美哒"
v2=v1.replace('XXX',"王栋轩")
v3=v1.replace('XXX',"王栋轩",1)
v4=v1.replace('XXX',"王栋轩",2)
print(v2,v3,v4)
输出:王栋轩棒棒哒,王栋轩美美哒 王栋轩棒棒哒,XXX美美哒 王栋轩棒棒哒,王栋轩美美哒
x.isalnum() 作用:判断字符串中是否只包含数字和字母;如果只包含数字和字符串,返回值是true;否则,false
v1="123abc-+" v2=v1.isalnum() print(v2) v1="123abc" v2=v1.isalnum() print(v2)
输出:
False
True
x.isalpha()作用是判断字符串中是否只含有英文字母。是,返回true,不是,返回false。
x.isdecimal()、x.isnumeric()和x.isdigit()用来判定是否只有数字,但是x.isdecimal()只能判定十进制的数字,x.isdigit()可以判定比较生僻的数字,比如②
x.expandtabs() 作用:将转义字符\t转为空格,空格数量为()中内容,缺省值为8。
v1="12345679\t1\t23456\t" v2=v1.expandtabs() print(v1) print(v2)
输出
x.isidentifier() 作用:检测字符串是否符合标识符命名规则。在python中,标识符命名规则为:只包含数字、字母和下划线,开头不能是字母。符合规则返回true,不符合返回false。
x.islower 作用:检测字符串中是否都是小写字母,如果是,返回true,如果不是,返回false。
x.isprintable() 作用:检测字符串中是否含有不能打印的字符。例如转义字符,\n \t等,这些都不能打印出来。如果含有,返回false,如果不含有,返回true
x.isspace() 作用:检测字符串是否全部是空格(空字符串),是,返回true,不是,返回false
x.istitle() 作用:检测字符串是否是标题,也就是每个单词首字母大写。
x.title() 作用:将字符串转为标题,也就是每个单词首字母大写。
x.islower() 作用:判断字符串中所有字符是不是小写字母,是,返回true,否,返回false
x.isupper() 作用:判断字符串中所有字符是不是大写字母,是,返回true,否,返回false
x.join() 作用:在原字符串中,每隔一个字符,插入一个新的字符。开头和结尾不加。
v1="床前明月光" v2=' ' v3=v2.join(v1) print(v3)
输出:
床_前_明_月_光
x.strip()、x.rstrip()和x.lstrip() 作用:去掉字符串中的指定子序列,缺省值默认为去掉空格或\t
v1="123456789" v2=v1.lstrip("236") v3=v1.rstrip("abc98a") v4=v1.strip("1") print(v2) print(v3) print(v4)
输出:
123456789
1234567
23456789
从结果中可以看出,必须从“头”开始,如v2=v1.lstrip("236")中,v1的左侧“1”没有去掉,后边的所有字符不可能去掉。
v1=" abc " v2=v1.lstrip() v3=v1.rstrip() v4=v1.strip() print(v2) print(v3) print(v4)
输出:
x.translate() 作用:替换字符串中的部分字符
v1='1383838438'
m=str.maketrans('123456','abcdef') #maketrans()的作用是将两个字符串联系起来,为后边的替换做铺垫
new_v1=v1.translate(m)
print(new_v1)
输出:
ac8c8c8dc8
x.partition()和x.rpartition() 作用:前者从左侧开始分割,后者从右侧开始分割,两者都只能分割成三部分
v1='1383838438' v2=v1.partition('3') v3=v1.rpartition('3') print(v2,v3)
输出:
('1', '3', '83838438') ('13838384', '3', '8')
x.split()和x.rsplit() 作用:前者从左侧开始分割,后者从右侧开始分割,与partition()不同的是,可以分割成任意部分,而且弊端是分割的标志不再作为分割的结果。例如下面例子中的“3”不会出现在分割结果中。split()括号中缺省时,默认为分割成数量最多的部分,即碰到相同字符就分割。
v1='1383838438'
v2=v1.split('3',2)
v3=v1.rsplit('3',2)
print(v2,v3)
输出:
['1', '8', '838438'] ['13838', '84', '8']
x.splitlines() 作用:对换行符\n进行分割。()中的参数是布尔值,true,false。true代表保留换行\n,false不保留\n(这里的\n不再是换行的意思,就是普通字符而已)。
v1="张三\n李四\n王五" v2=v1.splitlines(True) v3=v1.splitlines(False) print(v2,v3)
输出:['张三\n', '李四\n', '王五'] ['张三', '李四', '王五']
注意:True or False 首字母必须大写!!!否则不识别!!!