Python 内置库
本文将介绍 Python 中的几个常用的内置库(标准库)。
本文仅仅是常用内置库的简要示例,完整使用方式请参考 Python 官方文档
1. JSON(json)
JSON 库主要用于生成、解析 JSON 数据。
Python |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | import json
d = {
'name': 'Tom',
'age' : 25,
'job' : 'Student',
'desc': '一位学生',
}
print('输出为 JSON 字符串 :', json.dumps(d))
print('输出为 JSON 字符串(指定分隔符紧缩形式) :', json.dumps(d, separators=(',', ':')))
print('输出为 JSON 字符串(指定其他分隔符) :', json.dumps(d, separators=(', ', ' = ')))
print('输出为 JSON 字符串(中文等不转为为 ASCII 码):', json.dumps(d, ensure_ascii=False))
print('输出为 JSON 字符串(指定缩进) :', json.dumps(d, indent=2))
s = '{"name": "Tom", "age": 25, "job": "Student", "desc": "一位学生"}'
print('解析为 Python 对象:', json.loads(s))
|
输出:
Text Output |
---|
| 输出为 JSON 字符串 : {"name": "Tom", "age": 25, "job": "Student", "desc": "\u4e00\u4f4d\u5b66\u751f"}
输出为 JSON 字符串(指定分隔符紧缩形式) : {"name":"Tom","age":25,"job":"Student","desc":"\u4e00\u4f4d\u5b66\u751f"}
输出为 JSON 字符串(指定其他分隔符) : {"name" = "Tom", "age" = 25, "job" = "Student", "desc" = "\u4e00\u4f4d\u5b66\u751f"}
输出为 JSON 字符串(中文等不转为为 ASCII 码): {"name": "Tom", "age": 25, "job": "Student", "desc": "一位学生"}
输出为 JSON 字符串(指定缩进) : {
"name": "Tom",
"age": 25,
"job": "Student",
"desc": "\u4e00\u4f4d\u5b66\u751f"
}
解析为 Python 对象: {'name': 'Tom', 'age': 25, 'job': 'Student', 'desc': '一位学生'}
|
2. 正则表达式(re)
正则表达式库较为复杂,以下为一些简单的示例。完整的官方文档请参考 re — Regular expression operations
Python |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | import re
# 查找字符串
m = re.search('[0-9]+','abcd1234xyz')
if m:
print('查找满足正则表达式的内容:', m.group(0))
else:
print('无法找到指定内容')
# 判断是否匹配
m = re.match('[0-9]+','abcd1234xyz')
if m:
print('字符串能够匹配正则表达式:', m.group(0))
else:
print('字符串不匹配正则表达式')
# 替换字符串
result = re.sub('[0-9]+', '_', 'abc123abc')
print('替换后的字符串为:', result)
|
输出:
Text Output |
---|
| 查找满足正则表达式的内容: 1234
字符串不匹配正则表达式
替换后的字符串为: abc___abc
|
3. 时间(time)
Python 内置的时间库使用起来较为复杂,建议只在简单使用时使用。
对时间有复杂处理需求的,请使用第三方arrow
库。
Python |
---|
| import time
print('当前时间戳(秒) :', time.time())
print('当前时间戳(纳秒):', time.time_ns())
|
输出:
Text Output |
---|
| 当前时间戳(秒) : 1662041320.7340803
当前时间戳(纳秒): 1662041320734110181
|
4. 路径(os.path)
路径库可以方便在处理文件时生成、解析文件路径。
Python |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | from os import path
p = '/data/sample/file.txt'
print('返回文件名 :', path.basename(p))
print('返回文件目录 :', path.dirname(p))
print('拆分文件目录和文件名:', path.split(p))
print('合并文件目录、文件名:', path.join('/data/sample', 'doc', 'file.txt'))
print('简化路径冗余 :', path.normpath('/data/tmp/../sample/file.txt'))
files = [
'/data/sample/file.txt',
'/data/sample/file2.txt',
'/data/file3.pdf'
]
print('查询文件路径的共同部分:', path.commonprefix(files))
print('检查文件或目录是否存在:', path.exists(p))
print('返回文件大小 :', path.getsize(p))
print('返回上一次读取的时间 :', path.getatime(p))
print('返回上一次修改的时间 :', path.getmtime(p))
print('判断是否为常规文件 :', path.isfile(p))
print('判断是否为目录 :', path.isdir(p))
|
输出:
Text Output |
---|
1
2
3
4
5
6
7
8
9
10
11
12 | 返回文件名 : file.txt
返回文件目录 : /data/sample
拆分文件目录和文件名: ('/data/sample', 'file.txt')
合并文件目录、文件名: /data/sample/doc/file.txt
简化路径冗余 : /data/sample/file.txt
查询文件路径的共同部分: /data/
检查文件或目录是否存在: True
返回文件大小 : 20
返回上一次读取的时间 : 1662041767.7110395
返回上一次修改的时间 : 1662041767.7110395
判断是否为常规文件 : True
判断是否为目录 : False
|
5. 数学(math)
数学库包含了更多的数学运算相关的处理函数,如果希望使用更高级的数学功能,请使用第三方数学库numpy
。
Python |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | import math
print('自然常数 e:', math.e)
print('圆周率 pi :', math.pi)
print('向上取整:', math.ceil(1.2))
print('向下取整:', math.ceil(1.9))
print('指数运算:', math.pow(2, 10))
print('对数运算:', math.log(1024, 2))
print('取平方根:', math.sqrt(100))
print('弧度转换为角度:', math.degrees(0.25 * math.pi))
print('角度转换为弧度:', math.radians(45))
print('三角函数 sin(参数为弧度) :', math.sin(0.25 * math.pi))
print('三角函数 cos(参数为弧度) :', math.cos(0.25 * math.pi))
print('三角函数 tan(参数为弧度) :', math.tan(0.25 * math.pi))
print('三角函数 asin(参数为弧度):', math.asin(0.25 * math.pi))
print('三角函数 acos(参数为弧度):', math.acos(0.25 * math.pi))
print('三角函数 atan(参数为弧度):', math.atan(0.25 * math.pi))
|
输出:
Text Output |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | 自然常数 e: 2.718281828459045
圆周率 pi : 3.141592653589793
向上取整: 2
向下取整: 2
指数运算: 1024.0
对数运算: 10.0
取平方根: 10.0
弧度转换为角度: 45.0
角度转换为弧度: 0.7853981633974483
三角函数 sin(参数为弧度) : 0.7071067811865475
三角函数 cos(参数为弧度) : 0.7071067811865476
三角函数 tan(参数为弧度) : 0.9999999999999999
三角函数 asin(参数为弧度): 0.9033391107665127
三角函数 acos(参数为弧度): 0.6674572160283838
三角函数 atan(参数为弧度): 0.6657737500283538
|
6. 随机(random)
随机库包含了生成各种随机处理函数。
Python |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | import random
l = [1, 2, 3, 4, 5]
print('返回列表中的一个随机元素 :', random.choice(l))
print('返回列表中的 3 个随机元素:', random.sample(l, 3))
random.shuffle(l)
print('返回列表中的元素随机排序(洗牌):', l)
print('生成一个 [0, 1) 区间的实数 :', random.random())
print('生成一个 [5, 10] 区间的实数 :', random.uniform(5, 10))
print('生成一个 [5, 10] 区间的整数 :', random.randint(5, 10))
print('生成一个 [0, 10) 区间的整数 :', random.randrange(10))
print('生成一个 [5, 10) 区间的整数 :', random.randrange(5, 10))
print('生成一个 [5, 10) 区间(步进为 2)的整数,:', random.randrange(5, 10, 2))
|
输出:
Text Output |
---|
| 返回列表中的一个随机元素 : 3
返回列表中的 3 个随机元素: [3, 4, 2]
返回列表中的元素随机排序(洗牌): [5, 1, 3, 2, 4]
生成一个 [0, 1) 区间的实数 : 0.6214407642048402
生成一个 [5, 10] 区间的实数 : 9.359073537753634
生成一个 [5, 10] 区间的整数 : 8
生成一个 [0, 10) 区间的整数 : 8
生成一个 [5, 10) 区间的整数 : 6
生成一个 [5, 10) 区间(步进为 2)的整数,: 7
|
7. Base64(base64)
Base64 库主要用于对数据进行 Base64 的编码和解码。
Python |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | import base64
s = 'Hello, World。这里是 Python 教程'
b64 = base64.b64encode(s.encode()).decode()
print('对字符串进行 Base64 编码 :', b64)
b64 = 'SGVsbG8sIFdvcmxk44CC6L+Z6YeM5pivIFB5dGhvbiDmlZnnqIs='
s = base64.b64decode(b64.encode()).decode()
print('对字符串进行 Base64 解码 :', s)
s = 'Hello, World。这里是 Python 教程'
b64 = base64.urlsafe_b64encode(s.encode()).decode()
print('对字符串进行 URL 安全的 Base64 编码:', b64)
b64 = 'SGVsbG8sIFdvcmxk44CC6L+Z6YeM5pivIFB5dGhvbiDmlZnnqIs='
s = base64.urlsafe_b64decode(b64.encode()).decode()
print('对字符串进行 URL 安全的 Base64 解码:', s)
|
b64encode(...)、b64decode(...) 和 urlsafe_b64encode(...)、urlsafe_b64decode(...) 处理方式不同,不要混用
输出:
Text Output |
---|
| 对字符串进行 Base64 编码 : SGVsbG8sIFdvcmxk44CC6L+Z6YeM5pivIFB5dGhvbiDmlZnnqIs=
对字符串进行 Base64 解码 : Hello, World。这里是 Python 教程
对字符串进行 URL 安全的 Base64 编码: SGVsbG8sIFdvcmxk44CC6L-Z6YeM5pivIFB5dGhvbiDmlZnnqIs=
对字符串进行 URL 安全的 Base64 解码: Hello, World。这里是 Python 教程
|
8. 哈希算法(hashlib)
哈希算法库用于对数据进行 MD5、SHA1 等处理。
Python |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | import hashlib
s = 'Hello, World。这里是 Python 教程'
h = hashlib.md5()
h.update(s.encode())
print('返回字符串的十六进制 MD5:', h.hexdigest())
h = hashlib.sha1()
h.update(s.encode())
print('返回字符串的十六进制 SHA1:', h.hexdigest())
h = hashlib.sha256()
h.update(s.encode())
print('返回字符串的十六进制 SHA256:', h.hexdigest())
h = hashlib.sha512()
h.update(s.encode())
print('返回字符串的十六进制 SHA512:', h.hexdigest())
|
输出:
Text Output |
---|
| 返回字符串的十六进制 MD5: c2e7c7ebfc834c05b35be14e749651d0
返回字符串的十六进制 SHA1: 30a36af04729d938179fd67a7f4bda6920e5e160
返回字符串的十六进制 SHA256: b5ac91d338061d3a3cfd458b05ea3e15f3b565a18d28f5ee732a3803e381e6fc
返回字符串的十六进制 SHA512: 2c40122b8faf2d72677cafffc7a24756a5d2d9a8a7094e1b82d0bfb0e76b3b491b4347bdaf15332f10c79f05a2ff6ced9b240129b7db47ca632bb65219f4d47a
|