数据类型-数值&字符串
Posted datatool
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型-数值&字符串相关的知识,希望对你有一定的参考价值。
一、数值
1.1整型int
作用:年纪、等级、手机号、身份证号等整型数字相关
定义:age=10 # 本质age=int(10)
1.2浮点型float
作用:身高、薪资、体重等浮点数字相关
定义:salary=3000.3 #本质salary=float(3000.3)
二、字符串
2.1简介
作用:名字、性别、地址等描述性信息
定义:在单引号双引号三引号内,由一串字符组成,name = ‘sean‘ age = ‘18‘
可以把任意类型信息转为字符串:
name = str(int(1))
print(type(name))
2.2需掌握的操作
2.2.1按索引取值(正向取+反向取) :只能取
msg = ‘hello world‘
print(msg[0]) #输出h
print(msg[-1]) #输出d
print(msg[5]) #空格也占位置即字符数
2.2.2切片(顾头不顾尾,步长)
msg = ‘hello world‘
res = msg[0:5:2] # 1 2 3 4 起始位置为0,截止位置为5,步长值为2,共计3个元素。
print(res)
print(msg)
msg = ‘hello world‘
res=msg[1:5] #默认步长值为1
print(res)
res=msg[1:] #可以省略截至位置及步长值,默认截至位置为终点,步长值为1
print(res)
res=msg[:5] #可以省略开始位置及步长值,默认开始位置为开头,步长值为1
print(res)
res=msg[::1] #可以省略开始及截止位置,默认开始位置为开头,截至为止为终点,步长值为1
print(res)
msg = ‘hello world‘
print(id(msg))
res=msg[:]
print(id(res))
print(res)
print(res is msg) #复制功能,msg与res值相等,且id相等
msg = ‘hello world‘
print(msg[-1:-3:-1]) # 负数表示从右往左倒着取值,步长值也必须是负数。其他功能与正着取值一样。
print(msg[-1::-1]) # -1 -2
print(msg[::-1]) # -1 -2
2.2.3长度len
msg = ‘hello ‘
print(len(msg)) #空格也站字符数量
2.2.4成员运算in和not in
msg=‘sean is elegant‘
print(‘sean‘ in msg)
print(‘sean‘ not in msg) # not 推荐使用此种类型写法
print(not ‘XX‘ in msg)
2.2.5移除空白strip:原理:对左侧和右侧任何符号依次移除。
name = ‘ sean****‘
print(name.strip(‘ ‘))
print(name.lstrip(‘*‘))
print(name.rstrip(‘*‘))
msg = "#%*hello##**!"
res = msg.strip("#!*%") # strip一个一个的移除
print(res)
msg = "#%*hello##**!"
res=msg.replace(‘#!*%‘,‘‘) #将被替换的视为整体,进行替换,
print(res)
2.2.6切分split
name = ‘s e a n‘ #默认分隔符为空格
print(name.split())
name=‘root:x:0:0::/root/bin/bash‘
print(name.split(‘:‘,1)) #只想拿到顶级目录
name =‘s*e*a*n‘
print(name.split(‘*‘,2)) #从左往右依次累计切分
2.2.7循环
for x in "hello":
print(x)
for i in range(10,20,2): #数值为顾头不顾尾 ,3个元素,开始,终止,及步长值,默认为1.
print(i)
2.2.8 大小写切换
name = ‘Sean‘
print(name.upper())
print(name.lower())
captalize(句子起头单子首字母大写),swapcase(大写变小写,小写变大写),title(单词首字母大写)
msg="hello world sean"
print(msg.capitalize()) #无元素 句子首个单词的首字母大写
x="AbCdE"
print(x.swapcase()) #无元素
msg="hello world egon" #无元素 每个单词首字母大写
print(msg.title())
2.2.9 startswith与endswith判断以什么开始或结尾,真返回True,假返回False
name=‘sean‘
print(name.endswith(‘a‘))
print(name.startswith(‘s‘))
2.2.10 replace替换(旧字符,新字符,需要被替换第几个字符(不写则全部替换))可替换空格、大写小字母、字母、数字等
name = ‘s e an‘
print(name.replace(‘ ‘,‘‘))
msg = "#%*hello##**!"
res = msg.strip("#!*%") # strip一个一个的移除
print(res)
msg = "#%*hello##**!"
res=msg.replace(‘#!*%‘,‘‘) #将被替换的视为整体,进行替换,
print(res)
2.2.11 join 迭代的对象必须都是字符串,把所有字符串连接起来
tag=‘*‘ #链接符号可以自定义:空格、*、#等
print(tag.join(‘sean‘))
print(tag.join([‘sean‘,‘age‘,‘is‘,‘18‘])) #可迭代对象必须都是字符串
2.2.12 format格式化输出用法三则:
res=‘{} {} {}‘.format(‘egon‘,18,‘male‘) #无索引顺序,则默认按照由左至右依次输出
print(res)
res1=‘{1} {0} {1}‘.format(‘egon‘,18,‘male‘) #顺序为:sean为0,18为1,male为2,此时按照索引顺序输出
print(res1)
res2=‘{name} {age} {sex}‘.format(sex=‘male‘,name=‘egon‘,age=18) #有key,则按照key的顺序输出,推荐使用此种方式
print(res2)
2.2.13 center,ljust,rjust,zfill
name="sean"
print(name.center(10,‘*‘)) # 单词位于中心,左右各填充(10-单词)/2个*
print(name.ljust(10,‘*‘)) # 字符左侧各填充(10-单词)个*
print(name.rjust(10,‘*‘)) # 字符右侧各填充(10-单词)个*
print(name.zfill(10)) # 字符左侧各填充(10-单词)个0,用0填充
2.2.14 find,rfind,index,rindex,count
name=‘egon say hello‘
print(name.find(‘e‘,0,2)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引位置,从0开始计数
# print(name.index(‘e‘,2,4)) #同上,但是找不到会报错
print(name.count(‘e‘,1,3)) #顾头不顾尾,如果不指定范围则查找所有,找到返回查找对象的个数
print(name.count(‘o‘)) #顾头不顾尾,如果不指定范围则查找所有,找到返回查找对象的个数
2.2.15 isdigit:判断字符串是否是由纯数字(整数)组成的
print(‘18‘.isdigit())
print(‘18.3‘.isdigit())
age = input(‘your age: ‘).strip() # age="19",strip用于删除用户输入的空格,确保数值为纯数字。
if age.isdigit():
age = int(age)
if age > 18:
print(‘too big‘)
elif age < 18:
print(‘too small‘)
else:
print(‘right‘)
else:
print("必须输入数字,小垃圾")
2.2.16 is其他用法
1)is数字系列
#在python3中
num1=b‘4‘ #bytes
num2=u‘4‘ #unicode,python3中无需加u就是unicode
num3=‘四‘ #中文数字
num4=‘Ⅳ‘ #罗马数字
#isdigt:bytes,unicode
print(num1.isdigit()) #True
print(num2.isdigit()) #True
print(num3.isdigit()) #False
print(num4.isdigit()) #False
#isdecimal:uncicode
#bytes类型无isdecimal方法
print(num2.isdecimal()) #True
print(num3.isdecimal()) #False
print(num4.isdecimal()) #False
#isnumberic:unicode,中文数字,罗马数字
#bytes类型无isnumberic方法
print(num2.isnumeric()) #True
print(num3.isnumeric()) #True
print(num4.isnumeric()) #True
#三者不能判断浮点数
num5=‘4.3‘
print(num5.isdigit())
print(num5.isdecimal())
print(num5.isnumeric())
总结:
最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
如果要判断中文数字或罗马数字,则需要用到isnumeric
2)is其他
print(‘===>‘)
name=‘egon123‘
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.isidentifier())
print(name.islower())
print(name.isupper())
print(name.isspace())
print(name.istitle())
以上是关于数据类型-数值&字符串的主要内容,如果未能解决你的问题,请参考以下文章