不同数据类型的处理函数(一)

紫色部分使用率是非常高的,尽量掌握。以下例程以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 首字母必须大写!!!否则不识别!!!

posted @ 2018-09-02 10:45  理工—王栋轩  阅读(689)  评论(0编辑  收藏  举报