第三章 python的数据类型(上)

Posted py-xiaoqiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三章 python的数据类型(上)相关的知识,希望对你有一定的参考价值。

在本章,我们介绍下python的数据类型。 这章的内容比较多,我们分上,下两部分来介绍。

3.1 整型(int),浮点型(float)

3.1.1 整形的长度

在py2中有int和long,但是在py3中只有int,py3的int相当于py2的int+long。 py3的int的长度跟内存容量一样。

3.1.2 整除

py2和py3的整除是不一样的
py2:除的结果是小数也会返回整数,小数点后面的直接砍掉(不是四舍五入)
py3:除的结果是小数会自动转换成浮点类型

3.1.3 浮点型(float)

占位符 %f 的时候默认小数点后6位,第7位四舍五入。

3.2 布尔(bool)

用于表示真假的类型,只有True和False两种。

其他类型转换成布尔值:
,[],None,"",0 -> False

3.3 字符串(str),及其方法

字符串是写代码中最常见的,python内存中的字符串是按unicode编码存储的。 在python中字符串用‘‘或者""括起来表示。

在python中‘和"是一样的

注意:字符串是不可变类型

下面介绍下字符串的方法:

3.4.1 字母大小写

  • .capitalize(self) 首字母大写

  • .casefold(self) 字符串变小写。除此之外,可以把英语以外的字母变小写(多用于unicode)。(py3中新追加的)

  • .upper() 英字母全转大写,没有大小写的字符串不会报错

  • .isupper() 判断都是大写

  • .lower() 英字母全转小写

  • .islower() 判断都是小写

  • .swapcase(self) 大小写互相转换

  • .title(self) 每个单词的首字母变大写

3.4.2 判断数字

判断是否是数字有下面3中方法:

  • .isdigit()
s1 = '1'
s2 = '二'
s3 = '③'

s1.isdigit()  # True
s2.isdigit()  # False
s3.isdigit()  # True

# '1','②'可以判断
  • .isdecimal() 和int()能转换的字符串一致,所以推荐使用。
s1 = '1'
s2 = '二'
s3 = '③'

s1.isdecimal()  # True
s2.isdecimal()  # False
s3.isdecimal()  # False

# 只有'1'可以判断,和int()能转换的一致。推荐使用
# 详细:判断是否是10进制小数 
  • .isnumeric() # 判断是否是数字 -> ‘1‘,‘二‘,‘②‘都可以判断
s1 = '1'
s2 = '二'
s3 = '③'

s1.isdecimal()  # True
s2.isdecimal()  # True
s3.isdecimal()  # True

# '1','二','②'都可以判断

3.4.3 字符串格式化

  • .center(self,width,fillchar=None) 占用文本长度并居中,fillchar 是填充的字符

    类似的还有居左 .ljust(),居右 .rjust(),居右补0 .zfill()

  • .format(self,*args,**kwargs) 类似于字符串里用 %s 插入内容
s = "Welcome 0 to Apeland,you are No.1 user. you are 0"
s.format("Alex",998)
print(s)                            #输出不出来
print(s.format("Alex",998))         #这种方式或者加个变量 d = s.format("Alex",998) 然后print(d)

s = "Welcome name to Apeland,you are No.num user. you are name"
s.format(name = "Alex",num = 998)
print(s.format("Alex",998))         
  • .format_map(self,mapping) 用字典的元素填充。基本与format类似,只是里面要放入字典的key。
s = "Welcome key1 to Apeland,you are No.key2 user. you are key2"
d = "key1":"aaa","key2":"bbb"
s = s.format_map(d)
print(s)
执行结果:Welcome aaa to Apeland,you are No.bbb user. you are bbb

3.4.4 查询,判断字符串内容

  • .endswith(self,suffix,start=None,end=None) 判断以什么字符串结尾,也可以切片后判断

    类似的有: .startswith(self,prefix,start=None,end=None)

  • .find(self,sub,start=None,end=None) 从左到右找第一个sub相同的字符串,找到了返回下标,找不到返回-1。可切片。

    注意:切片后返回的下标依然是原字符串的下标
    类似的有: .rfind()

  • .index(self,sub,start=None,end=None) 与find基本一样,但是找不到会报错

    类似的有: .rindex()

  • .count(self,sub,start=None,end=None) 查询sub的个数,可以用start和end切片后数(范围count)

  • .isspace(self) 判断是不是空格,多个空格也可以

  • .isalnum(self) 判断是不是字母或数字

  • .isprintable(self) 是否可以打印(比如\r,\t,\n,空格 等)

  • .istitle() 每个单词的首字母都是大写

3.4.5 字符串处理

  • .strip(self,chars=None) 默认去掉字符串前后的 ‘\t‘,‘\n‘,‘\r‘,空格 (‘\t‘相当于tab)。输入参数可以去掉前后参数指定的字符串。
#去掉特殊的字符串,然后去掉空格
s = '  aabbccdd  ee'
s = s.strip('ee').strip()
print(s)

#输出结果:
aabbccdd

类似的有:
只去掉右边的:rstrip(),只去掉左边的:lstrip()

  • .join(self,iterable) 把iterable的列表拼接起来,每个元素之间用self字符串隔开。返回拼接后的字符串

    注意:只有字符串型的元素可以拼接

list1 = ["hello","the","world!"]
str1 = "-".join(list1)     #用 - 拼接
print(str1)
#执行结果:
hello-the-world!
  • .split(self,sep=None,maxsplit=-1) 把字符串分割并且返回一个列表,可以指定sep字符串来分割元素,sep会被删除。

    不指定sep,整个字符串会变成一个元素。注意sep不能同时指定两个字符。 maxsplit是最大分割次数,1就是分割一次。从左往右分割。

  • .splitlines(self,keepends=None) 根据换行分割,类似split(‘\n‘)

  • .partition(sep) 找到第一个sep,分割成3份:["sep前的","sep","sep后的"]

    类似的有: .rpartition()

  • 1对1的文字替换 .maketrans(self,*args,**kwargs) .translate()
str1 = 'abcdefg'
str2 = '1234567'

table = str.maketrans(str1,str2)

str3 = 'abcdefghijklmnopqrstuvwxyz'

result = str3.translate(table)

print(result)

# 执行结果
1234567hijklmnopqrstuvwxyz
  • .replace(self, old, new, count) 用new替换掉所有old字符串,并且返回替换后结果。

  • 字符串反转 str[::-1]

    注意:字符串没有reverse方法,reverse是列表的方法

以上是关于第三章 python的数据类型(上)的主要内容,如果未能解决你的问题,请参考以下文章

Python开发第三篇:Python基本数据类型

Python之路第三篇--Python基本数据类型

python学习第三篇基本数据类型

Python学习,第三课 - 数据类型

Python基础 | Python的组合数据类型

在python 3.6中处理自定义编码时遇到类型错误