py_day2_数据
读《python语言及其应用》做的笔记
目的: 了解unicode, utf-8的不同,编码,解码方法。
正则表达式部分感觉介绍的过于简略了,所以没有记录,以后专门看正则表达式的时候再写。
1,文本字符串
文本
ASCII使用7位 128种取值。
Unicode 使用若干个8bit的集合,称之为平面(plane)。
python3中的字符串是Unicode字符串而不是字节数组。
python中的unicodedata提供了下面两个方向的转换函数:
1)lookup(),接受不区分大小写的标准名称,返回一个Unicode字符。
2)name(),接受一个Unicode字符,返回大写形式的名称。
用法:
import unicodedata
name = unicodedata.name(value)
value = unicodedata.lookup(name)
这些函数的问题来自于字体的限制。
UTF-8
1)将字符串编码为字节
2)将字节解码为字符串
是一种变长编码方式
UTF-8是python,linux,以及html的标准文本编码方式。
编码: 将字符串转换为一系列字节的过程。
编码方式 'ascii', 'uft-8', 'latin-1', 'cp-1252', 'unicode-escape'
encode('utf-8')
解码: 将字节序列转换为Unicode字符串的过程。
decode('unicode')
格式化
1) 使用%的旧式格式化
%s, %d, %x, %o, %f, %e, %g, %%(文本值本身)
2) 使用{}和format的新式格式化
与旧格式化兼容
'{} {} {}'.format(n, f, s)
旧格式化中传入参数的顺序需要与%占位符出现的顺序完全一致,新格式化里,可以自己制定插入的顺序。
'{2} {0} {1}'.format(f, s, n)
0代表第一个参数f, 1代表第二个,2代表第三个。
参数名可以是字典或者命名变量,格式串中的标识符可以引用这些名称。
新格式化也支持其他各类设置(最小域宽、最大字符宽、排版,等等)。
正则表达式
与之相关的功能都位于标准库模块re中,因此首先要引用它。
需要定义一个用于匹配的模式(pattern)字符串以及一个匹配的对象:源(source)字符串。
result = re.match('You', 'Young Frankenstein')
优先进行编译以加快匹配速度:
youpattern = re.compile('You')
result = youpattern.match('Young Frankenstein')
其他方法:
search(),
findall(),
split(),
sub()。
^和$叫作锚点:^将搜索域定位到字符串的开头,$则定位到结尾。
这本书里没有看到我想看的部分,不作记载了。
2,二进制数据
需要了解字节序,以及整数的符号位之类的概念。
可能需要研究二进制文件格式、网络包内容,从而对其中的数据进行提取甚至修改。
该节了解一些基本操作。
字节和字节数组
字节是不可变的,像字节数据组成的元组。
字节数组是可变的,像字节数据组成的列表。