文章目录
- 前言
- 一、基础魔法分类
- 二、基础魔法一:数字魔法
- 1.int()---强制转换
- 2.bit_length()---求组成二进制位数
- 三、基础魔法二:字符串魔法
- 1.join()---字符串拼接
- 2.upper(),lower()---字母转大,小写
- 3.isupper(),islower()---判断大小写
- 4.strip()---去除字符
- 5.splist()---分隔字符串
- 6.count()---统计个数
- 7.find()---获取字符位置
- 8.expandtabs()---断句
- 9.format()---格式化
- 10.replace()---替换字符
- 11.len()---计算长度
- 12.索引与切片
- 13.center()---填充字符
- 14.capitalize()---首字母大写
- 15.ljust(),rjust()---左右补充字符
- 16.maketrans(),translate()---对应关系替换
- 17.splitlines()---根据换行符分割
- 18.swapcase()---字母大小写转换
- 19.startswith(),endswitch()---判断开头或结尾
- 20.isalnum()---判断字符组成
- 21.isnumeic() > isdigit() > isdecimal()---判断数字
- 22.isalpha()---判断字符组成
- 23.isprintable()---判断是否可以打印
- 23.isprintable()---判断是否可以打印
- 24.isidentifier()---判断字符串
- 25.isspace()---判断空格
- 26.istitle()---判断标题
- 四、课后魔法练习
- 总结
前言
Python中整型与字符串是比较常用的两种数据类型,基本每个代码文件都有出现,正如魔法中的基础魔法一样,使用高级魔法必须要有基础魔法的辅助与运用,方可施展。
一、基础魔法分类
- 数字(int(整型)/double/float(浮点型))
- 字符串(str)
- 列表(list),元组(tuple),字典(dict)
- 布尔值(bool)
二、基础魔法一:数字魔法
1.int()—强制转换
将纯数字的字符串转换为整形数字,即进制转化:
a = '101'
b = int(a) #将纯数字的字符串转换为整形数字
c = int(a,base=2) #将a这二进制数转化为十进制数,base=进制数
print(b,c)
2.bit_length()—求组成二进制位数
求当前数字(十进制)的二进制数最少有几位组成:
a = 123
n = a.bit_length()
print(n)
三、基础魔法二:字符串魔法
1.join()—字符串拼接
将字符串中每一个元素按照指定分隔符进行拼接(分隔):
a,b = 'Iloveyou',' '
c = b.join(a) #将a中各字符以b代表字符为分隔符拼接
d = '520'.join(a) #将a中各字符以'520'为分隔符拼接
print(c,d)
2.upper(),lower()—字母转大,小写
upper()将字母转为大写,lower()将字母转为小写:
a,b,c = 'i love you','I Love You','I LOVE YOU'
a1 = a.upper() #全转为大写
b1 = b.lower() #全转为小写
c1 = c.lower() #全转为小写
print(a1,'\n',b1,'\n',c1,'\n')
3.isupper(),islower()—判断大小写
isupper()判断是否全为大写,islower()是否全为小写:
a,b,c = 'i love you','I Love You','I LOVE YOU'
print(a.islower(),b.islower(),c.islower()) #判断是否全部小写
print(a.isupper(),b.isupper(),c.isupper()) #判断是否全部大写
4.strip()—去除字符
可去除空白空格/内部特殊符号/字符串子序列:
a = " love "
b = a.rstrip() #去掉右边空白
c = a.lstrip() #去掉左边空白
d = a.strip() #去掉两边空白
e = d.strip('elvrr') #指定去除,必须同时包含字符串头尾两元素的序列,方可删除所含内字符序列(先删两段空白)
f = d.strip('ovhd') #若不包含头尾两元素,则无法去除任何子元素序列
5.splist()—分隔字符串
分隔字符串(与partition()用法类似):
a = 'iloveyouyoulovei'
b1 = a.split('o') #按照o从左开始分割,全分割,不保留o
b2 = a.split('o',2) #按照o从左开始分割,只分割两次,不保留o
b3 = a.rsplit('o',2) #按照o从右开始分割,只分割两次,不保留o
b4 = a.partition('o') #按照o从左开始分割,只分割第一个,保留o
b5 = a.rpartition('o') #按照o从右开始分割,只分割第一个,保留o
6.count()—统计个数
统计字符串中指定子序列的个数:
a = 'I love you love you'
b = a.count('y') #统计字符串中 y 出现次数
c = a.count('o',0,9) #统计0到8内,o 出现次数
7.find()—获取字符位置
从开始往后找,找到第一个之后,获取位置:
a = 'I love you love you'
b = a.find('y') #找到返回对应第一个所在位置
c = a.find('uo') #找不到返回-1
d = a.find('v',2,8) #从0到7查找v的位置
print(b,c,d)
8.expandtabs()—断句
指定个数为一组,\t分割并补齐指定数目,\n换行制作对其表格:
a = 'name\tsex\tnumber\nW\t女\t123456\nL\t男\t456789\n'
b = a.expandtabs(12) #每一组占12个字符,不足\t补齐,\n换行
print(b)
9.format()—格式化
将一个字符串中占位符替换为指定值:
a = 'I love you {name},age {age}'
b = a.format(name='W',age=20) #方法一
c = a.format_map({'name':'W','age':20})
d = 'I love you {0},age {1}' #方法二
e = d.format('W',20) #方法三
f = 'I love you {},age {}'.format('W',20)#方法四
print(b,c,e,f)
#默认位置,从左到右
print('I love {} age {} like {}'.format('w',19,'520'))
#根据索引位置
print('I love {2} age {1} like {0}'.format('520',19,'w'))
print('I love {0} age {0} like {0}'.format(520,19,'w'))
#关键字参数
print('I love {name} age {age} like {n}'.format(name='w',age=19,n='520'))
#调用列表元素
print('I love {0[0]} age {0[2]} like {1[0]}'.format(['w','520',19],['520',1]))
#**解字典
print('I love {name} age {age} like {n}'.format(**{'name':'w','age':19,'n':'520'}))
#特殊代替符 s字符串,d整数,b二进制,o八进制,x小写十六进制,X大写十六进制,f小数,%百分数(默认保留六位)
print('I love {:s} age {:d} like {:s}'.format('w',19,'520'))
#*解列表
print('I love {:s} age {:d} like {:s}'.format(*['w',19,'520']))
#**解字典对应相应替代符
print('I love {name:s} age {age:d} like {n:s}'.format(**{'name':'w','age':19,'n':'520'}))
print('numbers:{:b},{:o},{:d},{:x},{:X},{:f},{:%}'.format(15,15,15,15,15,1.652,0.99999))
#0:达到数值统一效果
print('numbers:{0:b},{0:o},{0:d},{0:x},{0:X},{0:f},{0:%}'.format(15))
10.replace()—替换字符
对字符串字符进行替换:
a = 'Iloveyouyoulovei'
b = a.replace('o','u') #将o全转换为u
c = a.replace('o','u',2) #从左开始,将2个o转换为u
d = a.replace(a[8:],'*'*6)#将位置8后面所有元素转化为6个*
print(b,c,d)
11.len()—计算长度
计算字符串的长度:
a = 'I love you'
print(len(a))
12.索引与切片
字符串的索引(点)与切片(区间):
a = 'I love you'
print(a[0],a[3],a[-1]) #索引
print(a[2:6]) #切片
13.center()—填充字符
将字符串放于中间,两边用给定字符填充够指定个数:
a = 'love'
print(a.center(12,'*')) #love放于中间,两边填充*,补够12个字符
14.capitalize()—首字母大写
将首字母进行大写处理:
a = 'love'
b = a.capitalize()
print(b)
15.ljust(),rjust()—左右补充字符
ljust()左补充字符,rjust()右补充字符,达到指定个数:
a = 'love'
b = a.ljust(6,'*') #左填充6个*
c = a.rjust(6,'*') #右填充6个*
print(b,c)
16.maketrans(),translate()—对应关系替换
maketrans()进行对应翻译,translate()将字符串里对应替换,并得出结果:
a = 'I love you'
b = str.maketrans('love','1234') #将love对应替换1234
c = a.translate(b) #按照上面替换关系翻译字符串a
print(c)
17.splitlines()—根据换行符分割
根据换行符进行分割:
a = 'I\nlove\nyou'
print(a.splitlines()) #默认不保留False(可省)
print(a.splitlines(True)) #保留换行符分割
18.swapcase()—字母大小写转换
字母大写转小写,小写转大写:
a = 'i lOVE yOU'
b = a.swapcase()
print(b)
19.startswith(),endswitch()—判断开头或结尾
19.startswith()判断是否已指定字符开头,endswitch()判断是否已指定字符结尾:
a = 'I love you'
print(a.startswith('I'))
print(a.startswith('i')) #区分大小写
print(a.endswith('ou'))
20.isalnum()—判断字符组成
判断字符串是否只包含数字、字母、汉字:
a = 'love123王' #字母、汉字、数字
b = '123456 ' #空格不属于
c = 'li李*' #汉字不属于
print(a.isalnum(),b.isalnum(),c.isalnum())
21.isnumeic() > isdigit() > isdecimal()—判断数字
isnumeic() > isdigit() > isdecimal()判断字符串是否只包含数字(范围从大到小):
a = '123' #判断三种用法的范围
b = '123①'
c = '123①二'
print(a.isdecimal(),b.isdecimal(),c.isdecimal())
print(a.isdigit(),b.isdigit(),c.isdigit())
print(a.isnumeric(),b.isnumeric(),c.isnumeric())
22.isalpha()—判断字符组成
判断字符串是否只含字母、汉字:
a = 'I 爱 you'
b = 'Iloveyou'
c = 'I520you'
d = 'I爱you'
print(a.isalpha(),b.isalpha(),c.isalpha(),d.isalpha())
23.isprintable()—判断是否可以打印
判断是否可以打印:
a = 'I love you'
b = 'I\t love\n you\t' #包含\n,\t这类字符为非可打印字符串
print(a.isprintable(),b.isprintable())
23.isprintable()—判断是否可以打印
判断是否可以打印:
a = 'I love you'
b = 'I\t love\n you\t' #包含\n,\t这类字符为非可打印字符串
print(a.isprintable(),b.isprintable())
24.isidentifier()—判断字符串
判断字符串是否为标识符(变量名规则):
a = 'love_123'
b = '_123love'
c = '123w'
print(a.isidentifier(),b.isidentifier(),c.isidentifier())
25.isspace()—判断空格
判断是否为空格:
a = ' '
b = 'I love you'
print(a.isspace(),b.isspace())
26.istitle()—判断标题
判断是否为标题:
a = 'I love you'
b = 'I Love You'
c = 'I LOVE YOU'
print(a.istitle()) #组成字符串的每一个子序列,只有首字母为大写才为标题
print(b.istitle()) #单独的数字、字符、文字均不是标题
print(c.istitle()) #符合首字母大写,与数字、字符、文字混合,可满足标题
四、课后魔法练习
输入一段字符,输出其中所含数字、字母、空格、汉字及其他字符的出现个数:
a = input('请输入一段字符:')
numbers,letters,spaces,words,others = 0,0,0,0,0 #初始化
for i in a:
if i.isdecimal(): #判断是否为数字,选择范围最小的isdecimal(),去除如‘二②’此类数字
numbers = numbers+1
elif i.isspace(): #判断是否为空格
spaces = spaces+1
elif i.isalpha(): #判断是否为字母或汉字
if i == i.swapcase(): #大小写转换,只有汉字转化后才等于其本身,从而分辨汉字与字母
words = words+1
else:
letters = letters+1
else: #剩余只有其他字符
others = others+1
print('数字:%d,字母:%d,汉字:%d,空格:%d,其他字符:%d' %(numbers,letters,words,spaces,others))
总结
数字与字符串为Python中必不可少的一部分,以上涉及的方法并不用立刻全部完全掌握,因为在后面自己编写代码时会经常遇到,在操作中记忆才会记得更深。在Python魔法世界中,魔法基础必须要打好,没有足够大的魔法基础做地基,又怎能释放高级魔法呢?