Python Magic——数字与字符串


前言

Python中整型与字符串是比较常用的两种数据类型,基本每个代码文件都有出现,正如魔法中的基础魔法一样,使用高级魔法必须要有基础魔法的辅助与运用,方可施展。


一、基础魔法分类

  1. 数字(int(整型)/double/float(浮点型))
  2. 字符串(str)
  3. 列表(list),元组(tuple),字典(dict)
  4. 布尔值(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)  #统计08内,o 出现次数

7.find()—获取字符位置

从开始往后找,找到第一个之后,获取位置:

a = 'I love you love you'
b = a.find('y')   #找到返回对应第一个所在位置
c = a.find('uo')  #找不到返回-1
d = a.find('v',2,8) #从07查找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魔法世界中,魔法基础必须要打好,没有足够大的魔法基础做地基,又怎能释放高级魔法呢?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值