0x01 正则库re

运用python自带的正则库

1
import re

设置一个匹配对象

1
member = re.compile('')

在单引号内写正则表达式。

还可以传入第二个参数,用来指定额外的条件。

1
2
3
member = re.compile(r'', re.I)  #忽略大小写
member = re.compile('.*?', re.DOTALL) #句点匹配符匹配换行符
member = re.compile('.*?', re.VERBOSE) #忽略正则表达式字符串中的空白符和注释

0x02 有关正则的python方法

search()

找到第一个匹配的字符串并返回一个Match对象

1
2
3
4
member = re.compile(r'123')
mo = member.search('123456')
print(mo.group())
#123

findall()

找到所有匹配的字符串并返回一个列表

1
2
3
4
member = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
member.findall('Cell: 415-555-9999 Work: 212-555-0000')

#['415-555-9999', '212-555-0000']

sub()

找到匹配的字符串并用第一个参数替换

1
2
3
4
name = re.compile('Agent\s\w+')
mo = name.sub('CENSORED', 'Agent Alice gave the secret documents to Agent Bob.')
print(mo)
#CENSORED gave the secret documents to CENSORED.

group()groups()

当使用括号分隔正则表达式时,group()可以指定返回第几部分,groups()返回一个元组

1
2
3
4
5
6
phoneNumRegex = re.compile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)')
mo = phoneNumRegex.search('My number is 415-555-4242.')
mo.group(1) #'415'
mo.group(2) #'555-4242'
mo.group(0) #'415-555-4242'
mo.group() #'415-555-4242'

0x03 文件读写

一些os模块

getcwd()

获取当前工作路径

chdir()

修改当前工作路径

makedirs()

新建文件夹

os.listdir(path)

返回路径中文件名字字符串的列表

os.path模块

abspath(path)

相对路径转化为绝对路径

isabs(path)

判断是不是绝对路径

relpath(path, start)

返回从 start 路径到 path 的相对路径的字符串,如果没有提供 start,就使用当前工作目录作为开始路径

dirname(path)

返回路径的目录(目录名称)

basename(path)

返回路径的文件名(基本名称)

split()

返回目录名称和基本名称的元组

os.path.sep

这是一个变量,os.path.sep 变量设置为正确的文件夹分割斜杠

getsize(path)

返回 path 参数中文件的字节数

os.path.exists(path)

检测文件或者文件夹是否存在

os.path.isfile(path)

存在文件?

os.path.isdir(path)

存在文件夹?

更多操作见os.path模块的完整文档

0x04 用shelve模块保存变量

1
2
3
4
5
import shelve
shelfFile = shelve.open('mydata')
cats = ['one', 'two', 'three']
shelfFile['cats'] = cats
shelfFile.close()

导入shelve模块,新建一个mydata文件,用键值对的方法保存数据。

0x05 JSON

json是一种文本规范,用来保存树形结构的数据很方便。

JSON支持的数据类型

1、字符串:需要包含在一对双引号内,不能是单引号;

2、数字:可以是整数和浮点数;

3、布尔值:true和false

4、null:空值

注:上述的数据类型不能内嵌其他值。

5、键值对:需要包含在一对花括号内,用逗号隔开键值对,且键值对的键必须为字符串,但值可以是JSON支持的 任意数据类型中的一种,且无需统一类型。

6、数组:需要包含在一对中括号内,用逗号隔开,且值同上一样,无需统一类型。

上述两种数据类型可以内切其他值,使得JSON能够表示树形结构的数据。

JSON中的空格和换行不会有实际影响。