数据类型-数值&字符串

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())

 

 

 

 







以上是关于数据类型-数值&字符串的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 各种数值类型最大值和最小值 Int, short, char, long, float,&nbs

对这个带有 & 不带 = 的代码片段返回类型感到非常困惑

数据类型转换

Python3 & 基本数据类型(一)

Oracle字符类型与数值类型的转换

2 Series&Pandas