数据类型之字符串类型(string)
字符串分两个部分:字符(char)和字符串(string),字符是字符串的更小单位。字符串这种类型的存在就是为了处理人们在表达除数字之外,比如语言、文字、符号和词语的内容而载入到内存中。字符串并不是像数字(数值)一样,可以由计算机非常方便的转换(因为数字跟计算机的二进制比较接近),因此我们前面提到过的ASCII和Unicode编码就是把上述内容对应编码方便计算机记录、查找和操作。
所谓字符串:以单引号或者双引号括起来的任意文本,把用单引号或者双引号包裹起来的字面量称作字符串或者字符。
在前面我们见到过:
' ' :单引号的表示
" " :双引号的表示
""" """ :三引号的表示
\t :转义字符
b'xb00' :二进制的表示
等等。
这些都是字符或字符串的表示方式。
另外,还有一种更加高级的字符串处理方式:“正则表达式”,在后面会有讲述。
=============================================================================
小贴士:
字面量:所谓字面量(literal)是和变量相对应的。比如x = 'ABC',其中'ABC'就是字面量,x叫做变量。字面量就是指的这个量本身。
=============================================================================
第一部分:字符串的简单应用
1. 创建字符串
我们创建字符串是和前面的定义一样。通过双引号和单引号进行创建。、
..........................................................................................................................................
str1 = “Thomas is my name”
str2 = 'My name is Thomas'
...........................................................................................................................................
这样就创建了一个字符串。
2. 转换成字符串
我们在前面学过将一个数字转换成为字符串。我们也是可以通过转换函数进行字符的创建。
3. 字符串的运算(字符串的拼接和字符串的重复操作)
字符串并不是像数字一样存在加减乘除的运算。所谓字符串的运算就是对字符串进行拼接和重复的操作。
4. 字符串大小比较
字符串大小的比较和数字类型的大小比较是不同的。字符串大小是不能直接比较的,字符串的比较其实质是字符串对应多的ASCII码或Unicode码之间比较,另外字符串的比较是有一定的规则:
规则1:从第一个字符开始比较大小,谁的ASCII码数字大谁就打。
规则2:如果相等会比较下一个字符的ASCII码,谁的数字大谁就打。
规则3:返回结果和数字类型的结果一样,相同返回True,不相同放回False
5. 字符串的查找(访问)
字符串的查找是通过下标的方式进行查找的。
下标的格式为:[ ] ([start]:[end]:[step])
下标的值可以为正也可以为负,如果为负数那么表示为从右向左进行查找。
其中用冒号进行分割,下标是从0开始。
=============================================================================
小贴士:
有一个笑话:程序员属羊总会少一只,因为几乎所有的计算机语言计数都是从0开始的。在字符串中,0表示字符串的第一个字符位置。另外,如果有空格或者其他字符也算一个位置。
=============================================================================
6. 判断某个字符是否是字符串的一部分。
这里就用到了2个成员运算符和2个身份运算符,他们分别是:
符号:"in"、"not in" 和 "is"、"is not"
成员运算符:判断左边的成员是否属于右边的集合,如果是返回为True;如果非,返回为False。相反的是not in,如果是返回为False,如果非返回为True。
身份运算符:判断左边的成员是否和右边成员相等,如果是返回为True;如果非,返回为False。相反的是is not,如果是返回为False,如果非返回为True。
第二部分:字符串常用的内建函数
内建函数通常是可是实现字符串的“增删改查”。"增删改查"是对数据类型常用的四类
操作方式,后面我们会学到列表、字典等数据类型,也要学会他们对应的这四种操作方式。
=============================================================================
小贴士:
内建函数也叫:bult-in函数。是和外建函数对应的概念。也就是语言本身自有或者"出厂时"自带的函数,通常是不允许修改的。
=============================================================================
1. eval
函数:eval。
用法:这个函数在前面学到过,复习一下。
2. len
函数:len
语法:len(string)
用法:返回字符串的长度,一般用于查找字符串的循环中
3. lower、upper
函数:lower、upper
语法:lower(string)、upper(string)
用法:将字符串中的大写字母转换为小写字母,中文不变;将字符串中的小写字母转换成大写字母,中文不变。
4. swapace
函数:swapace
语法:swapace(string)
用法:字符串大小写的互相转换,将大写字母转换成小写字母,将小写字母转换成大写字母。
5. capitalize、tile
函数:capitalize、title
语法:capitalize(string)、title(string)
用法:将字符串中的首句首字母大写,其他字母位置转换成小写;将每个单词(或者字母)第一个单词大写。
6. center
函数:center
语法:center(self,width,fillchar) fillchar = character
用法:返回一个指定宽度的字符串(居中的字符串),fillchar为填充的字符,默认为空格填充。
7. ljust、rjust
函数:ljust、rjust
语法:ljust(width, fillchar) fillchar = character、rjust(width,fillchar) fillchar = character
用法:l=left,返回一个指定宽度的左对齐字符串,fillchar为填充字符,默认为空格。
r=right,返回一个指定宽度的右对齐字符串,fillchar为填充字符,默认为空格。
8. zfill
函数:zfill
语法:zfill(width)
用法:z = zero,返回一个长度为width的字符串,元字符右对齐,左侧填充0。
9. count
函数:count
语法:count(str,[,start] [,end])
用法:返回字符串中str出现的次数,可以指定一个start和end字符串中的范围,默认从头到尾。
10. find、rfind
函数:find、rfind
语法:find(str, [,start] [,end])、rfind(str, [,start] [,end])
用法:从左向右,检测str字符串是否在包含的字符串中,可以指定范围,默认从头到尾。得到的是第一次出现的开始下标,只不过如果str不存的,返回为-1。
从右向左,检测str字符串是否在包含的字符串中,可以指定范围,默认从尾到头。得到的是第一次出现的开始下标,只不过如果str不存的,返回为-1。
11. index、rindex
函数:index、rindex
语法:index(str,, [,start] [,end])、rindex(str,, [,start] [,end])
用法:用法与find和rfind一样,但是如果str不存的话,会报告一个异常。
12. operator.eq
函数:operator.eq(cmp)
语法:operator.eq(str1, str2)
用法:比较两个字符串的大小,在Python3中,原先的cmp函数比较字符大小的方式被取代,调用operator库的方式来比较两个字符串的大小。
13. lstrip、rstrip、strip
函数:lstrip、rstrip、strip
语法:lstrip(char)、rstrip(char)、strip(char)
用法:高级切片功能。从左侧开始截取指定的字符、从右侧开始截取指定的字符、从任意位置截取指定的字符(默认为空格,包括换行符\n,也包括制表符\t等)。
14. join
函数:join
语法:"(拼接内容)".join([拼接变量A,拼接变量B])
用法:字符串拼接函数
15. startswith、endswith
函数:startswith、endswith
语法:startswith(str [,start] [,end])、endswith(str [,start] [,end])
用法:判断以什么字符串(字符)作为开头、判断以什么字符串(字符)作为结尾。
17. expandtabs
函数:expandtabs
语法:expandtabs(tabsize = 10)
用法:与\t结合使用,在字符串中\t的位置加入空格。
18. replace
函数:replace
语法:replace(“被替换”,“替换内容”)
用法:用一个字符串(字符)去替换字符串(字符)当中的内容。
19. split、rsplit
函数:split、rsplit
语法:split("", section) section = 0、split("", section) section = 0
用法:按照什么分割, 按照第几次出现分割字符的位置开始分割,section=分割成次数、从右侧开始按照什么分割, 按照第几次出现分割字符的位置开始分割,section=分割成次数。
20. is... 几种判断字符串的函数(返回的都是True和False两种结果)
在Python中有非常多is打头的函数,基本上都是用来判断是否为真或者假的一种判断函数,在这里也要学会举一反三。
20.1 isnumeric、isalpha、isalnum
函数:isnumeric、isalpha、isalnum
语法:isnumeric(str)、isalpha(str)、isalum(str)
用法:判断是否是包含或全包含数字,是返回为真,否则为假。
判断是否是包含或者全包含字母,是返回为真,否则为假。
拆分:is alpha number,如果字符串中包含或全包含字母、数字、中文返回为真,否则返回为假。其他诸如里面有空格或者其他字符,返回都为假。
20.2 isdecimal
函数:isdecimal
语法:isdecimal(str)
用法:判断字符串中是否是一个十进制数
20.3 isdigit
函数:isdigit
语法:isdigit(str)
用法:判断字符串中是否是一个数字(必须是数字,和isnumeric用法一样)
20.4 islower、isupper
函数:islower、isupper
语法:islower(str)、isupper(str)
用法:判断字符串中是否都是小写(忽略里面有空格情况);判断字符串中是否都是大写(忽略里面有空格情况)
20.5 isspace
函数:isspace
语法:isspace(str)
用法:判断字符串是否是一个只包含空格的字符串,如果里面存在字符返回为假,否则为真。
20.6 istitle
函数:istitle
语法:istitle(str)
用法:判断字符串中是否每个单词都是大写,如果是返回为真,否则为假。
20.7 isinstance
函数:isinstance
语法:isinstance(object, (classinfo1,classinfo2,classinfon))
用法:判断一个对象是否是已知的类型,类似于type()。其中object---实例对象;classinfo---可以是直接或者间接类名、基本类型或者有他们组成的元组。如果object判断为真,返回为True,如果object判断为假,返回为False。其中classinfo可以是一个单独进行判断,如果是多个表示object的类型是括号里面的其中一个(用括号括起来是表示由classinfo组成的元组)。
=============================================================================
小贴士:
isinstance和type的区别:
1.type可以只接受一个参数,打印位置所属的类型;isinstance只能判断是否属于某个已知类型(已知和未知的区别)
2.isinstance可以判断子类对象是否继承父类;而type不可以(高级内容,后面教程)
=============================================================================
20.8 isatty
函数:isatty
语法:isatty()
用法:返回是否是一个终端设备(不常用)
举例:略
第三部分:字符串的映射
字符串还可以通过映射的方式进行修改。
1. makestrans、translate
函数:maketrans translate
语法:str.maketrans str.translate
用法:创建表字符串映射转换表(不常用)
str.maketrans(x:intab , y:outtab, z:delchars)
inttab -- 字符串中要替代的字符组成的字符串。
outtab -- 相应的映射字符的字符串
delchars -- 可选参数,表示要删除的字符组成的字符串(Python3有,Python2没有)
str.translate(self, table:dict[int,Any])
前言
第一部分:
Python
..........................................................................................................................................
int add(int a, int b)
...........................................................................................................................................
=============================================================================
小贴士:11111111111111111111111111111111111111111111111111111111111111111111111111111
=============================================================================