2.标准数据类型--字符串
一、字符串:
在python中,字符由单引号,双引号,引起来的形式,称之为字符串。python不支持单字符类型,单个字符在python中也被认为是字符串。
python字符串是不可变的。
在所有编程语言中,字符串几乎无所不在,编程的本质就是对数据的加工处理,对字符串处理的能力是编程最重要的能力之一。
二、字符串形式:
'abc345' "897*!" r'a\bcde' u'abc123'
三、字符串使用场景:
给班里同学作一份通讯录 我们就可以把同学名当作变量,手机号,住址当成值:
四、字符串操作格式:
tmpstr = '' tmpstr = "" str(object='') tmpstr = '18801118888-Shanghai' tmpstr = 'To Live or diE, tHat Is a question'
五、格式化
capitalize() :使首字母大写,其它字母小写 title() :每单词的首字母大写,其它字母小写 lower() :将字符串全部变成小写 upper() :将字符串全部变成大写 swapcase() :大写字母变小写,小写字线变大写 center() :设置输出长度,并将字符串居中显示,center(100) ljust() :设置输出长度,并将字符串居左,ljust(100) rjust() :设置输出长度,并将字符串居右,rjust(100) zfill() :设置输出长度,如果字符串小于长度值,则左侧用'0'补充。 expandtabs() :将tab键转换为空格,默认一个tab转换成8个空格 translate() :将字符串按按照,一定的映射关系进行替换 tmptable = str.maketrans('abcde','12345') 生成映射关系表 tmpstr.translate(tmptable) 根据映射关系表生成字符串
1.format :格式化输出
'Hi {} ,age {}'.format('Tom',18) 'Hi {1} ,age {0} {0}'.format('Tom',18) 'Hi {name},age {age}'.format(name='Tom',age=20)
2.:[填充字符][对齐方式 <^>][宽度]
'{0:*>10}'.format(88) '{0:*<10}'.format(88) '{0:*^10}'.format(88)
3.精度与进制
'{0:.3f}'.format(1/6) '{0:b}'.format(11) 二进制 '{0:o}'.format(11) 八进制 '{0:x}'.format(11) 十六进制 '{0:,}'.format(123456789) 千分位格式化
4.字典列表参数
tmpdict = {'name':'Tom','age':20} 'my name is {name},age is {age}'.format(**tmpdict) tmplist = ['Tom',22] 'my name is {0[0]},age is {0[1]}'.format(tmplist)
六、判断方法:
islower() :判断字母是不是全为小写 isupper() :判断字母是不是全为大写 isalnum() :判断字符串仅有字母数字组成 isalpha() :判断字符串仅有字母组成 isdigit() :判断字符串仅有自然数组成(正数和0) isspace() :判断字符串仅有空字符组成,' \t\f\v\n\r '.isspace() istitle() :判断字符串是不是标题形式(每个单词首字母大写,其它字母小写) startswith() :判断字符串开始部分 endswith() :判断字符串结束部分
七、切割查找:
count() :查询某一字符出现在次数 strip() :删除字符串两端的空字符 同时也可以删除指定的字符,字符没有顺序只要在两端即可。 'li bail'.strip('li') ==> ' ba' lstrip() :删除字符串左端的空字符 rstrip() :删除字符串右端的空字符 split() :从左侧开始按某些分隔符分隔字符,默认为空字符,返回列表 rsplit() :从右侧开始按某些分隔符分隔字符,默认为空字符,返回列表 splitlines():用换行符分隔字符串 partition() :从左侧开始按某些分隔符分隔字符,返回含有分割符的列表,切割一次 rpartition():从右侧开始按某些分隔符分隔字符,返回含有分割符的列表,切割一次 join() :用某一字符将某列表连接成字符串。'+'.join(tmpstr.splitlines()) find() :从左侧查找某一字符是不是在字符串中,在则返回索引值 ,不在则返回-1 rfind() :从右侧查找某一字符是不是在字符串中,在则返回索引值 ,不在则返回-1 index() :从左侧查找某一字符的索引,存在则返回索引值 ,不在抛出异常 rindex() :从右侧查找某一字符的索引,存在则返回索引值 ,不在抛出异常 replace() :将匹配的字符换成其它字符
八、序列操作:
在python中我们将由多个独立的对象或元素构成的新对象,称之为序列。python为序中每一个独立的对象或元素从0开始编上序号,这种序号我们称之为索引。
Python包含 6 中内建的序列,包括列表、元组、字符串、Unicode字符串、buffer对和range对象。序列操作是通用的,本节就以字符串为例讲解序列操作。
1.索引操作:S = 'LIBai,dufu,baijuyi'
按照元素位置索引值取元素,编号依次为 0 1 2 3 ……。也可以从右向左依次为 -1 -2 -3 ..... tmpstr[0] tmpstr[3] tmpstr[-1]
2.切片操作:
获取一定索引范围的元素,也可以设置步长,即每隔几个元素取一次元素 tmpstr[2:5] tmpstr[2:5:2] tmpstr[:] tmpstr[::3] tmpstr[-3:-1] tmpstr[-3:-1:2] tmpstr[-1:-3:-1] tmpstr[::-1]
3.加法 乘法操作:
加法是将多个序列合并成一个;乘法是指对序列重复输出的次数 tmpstr + 'ABC' tmpstr * 3 成员资格操作: 'XY' in tmpstr 'XY' not in tmpstr 序列内建函数: 求序列长度len(); 求序列中最大值 max(); 求序列中最小值 min() len(tmpstr) max(tmpstr) min(tmpstr)
九、编码与解码:
内存里的字符 → 内存里的 unicode → 字体文件中的 gid 序列 → 字体文件中的矢量图序列 → 点阵化送显示屏
字节、字符、字符集、字符码、字符编码
1.字节
字节(Byte)是计算机中数据存储的基本单元,一字节等于一个8位的比特,计算机中的所有数据,不论是保存在磁盘文件上的还是网络上传输的数据(文字、图片、视频、音频文件)都是由字节组成的。
2.字符
你正在阅读的这篇文章就是由很多个字符(Character)构成的,字符一个信息单位,它是各种文字和符号的统称,比如一个英文字母是一个字符,一个汉字是一个字符,一个标点符号也是一个字符。
3.字符集
字符集(Character Set)就是某个范围内字符的集合,不同的字符集规定了字符的个数,比如 ASCII 字符集总共有128个字符,包含了英文字母、阿拉伯数字、标点符号和控制符。而 GB2312 字符集定义了7445个字符,包含了绝大部分汉字字符。
4.字符码
字符码(Code Point)指的是字符集中每个字符的数字编号,例如 ASCII 字符集用 0-127连续的128个数字分别表示128个字符,例如 "A" 的字符码编号就是65。
5.字符编码
字符编码(Character Encoding)是将字符集中的字符码映射为字节流的一种具体实现方案,常见的字符编码有 ASCII 编码、UTF-8 编码、GBK 编码等。某种意义上来说,字符集与字符编码有种对应关系,例如 ASCII 字符集对应 有 ASCII 编码。
ASCII 字符编码规定使用单字节中低位的7个比特去编码所有的字符。例如"A" 的编号是65,用单字节表示就是0×41,因此写入存储设备的时候就是b'01000001'。
6.编码、解码
编码的过程是将字符转换成字节流,解码的过程是将字节流解析为字符。