Python 库记录

一些标准库与第三方库记录

标准库

difflib

difflib: 文本差异

1
2
import difflib
print difflib.SequenceMatcher(None, '今天天气不错', '今天气很好').ratio() #输出: 0.666666666667

filecmp

filecmp: 文件对比

1
2
import filecmp
filecmp.cmp('undoc.rst', 'undoc.rst')

struct

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> import struct
>>> struct.pack('I', 10240099)
'[email protected]\x9c\x00'
>>> struct.pack('<I', 10240099)
'[email protected]\x9c\x00'
>>> struct.pack('>I', 10240099)
'\x00\[email protected]'
>>> struct.pack('I', 2**32-1)
'\xff\xff\xff\xff'
>>> struct.unpack('I', _)
(4294967295L,)
#< 小端序
#> 大端序
#I 无符号整型

第三方库

colorama

colorama: cmd 彩色输出
pip install colorama

1
2
3
4
5
6
from colorama import Fore, Back, Style
print(Fore.RED + 'some red text')
print(Back.GREEN + 'and with a green background')
print(Style.DIM + 'and in dim text')
print(Style.RESET_ALL)
print('back to normal now')

progressbar2

progressbar2: cmd 进度条
pip install progressbar2

1
2
3
4
5
6
import time
import progressbar

bar = progressbar.ProgressBar()
for i in bar(range(100)):
time.sleep(0.02)

jieba

jieba: 中文分词
pip install jieba

1
2
3
4
import jieba

seg_list = jieba.cut("我来到北京清华大学")
print / ".join(seg_list) #输出: 我/ 来到/ 北京/ 清华大学

fake-useragent

fake-useragent: 更多 useragent!
pip install fake-useragent

1
2
3
from fake_useragent import UserAgent
ua = UserAgent()
print ua.random

pyfiglet

pyfiglet: 字符 Ascii
pip install pyfiglet

1
2
3
4
5
6
7
8
9
10
from pyfiglet import Figlet
f = Figlet(font='slant')
print f.renderText('text to render')
#输出:
__ __ __ __
/ /____ _ __/ /_ / /_____ ________ ____ ____/ /__ _____
/ __/ _ \| |/_/ __/ / __/ __ \ / ___/ _ \/ __ \/ __ / _ \/ ___/
/ /_/ __/> </ /_ / /_/ /_/ / / / / __/ / / / /_/ / __/ /
\__/\___/_/|_|\__/ \__/\____/ /_/ \___/_/ /_/\__,_/\___/_/

PrettyTable

PrettyTable: 表格格式化输出
pip install prettytable

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from prettytable import PrettyTable
x = PrettyTable(["姓名", "性别", "年龄", "存款"])
x.add_row(["赵一","男", 20, 100000])
x.add_row(["钱二","男", 21, 500])
x.add_row(["孙三", "男", 22, 400.7])
x.add_row(["李四", "男", 23, 619.5])
x.add_row(["周五", "男", 24, 1214.8])
x.add_row(["吴六", "女", 25, 646.9])
x.add_row(["郑七", "女", 26, 869.4])
x.add_row(["王七加一", "男", 21, 869.4])

print(x)

'''
结果
+----------+------+------+--------+
| 姓名 | 性别 | 年龄 | 存款 |
+----------+------+------+--------+
| 赵一 | 男 | 20 | 100000 |
| 钱二 | 男 | 21 | 500 |
| 孙三 | 男 | 22 | 400.7 |
| 李四 | 男 | 23 | 619.5 |
| 周五 | 男 | 24 | 1214.8 |
| 吴六 | 女 | 25 | 646.9 |
| 郑七 | 女 | 26 | 869.4 |
| 王七加一 | 男 | 21 | 869.4 |
+----------+------+------+--------+
'''

psutil

psutil: 系统性能信息
pip install psutil

tenacity

无比简单的 Exception Retry
出现错误的时候自动重试。还有延时以及其他功能,高持续爬虫必备。
pip install tenacity

gmpy2

密码学相关,用过都说好。传送门🚪

ngender

根据中文名字猜测性别。传送门🚪

1
2
3
4
5
6
7
In [1]: import ngender

In [2]: ngender.guess('宋潇')
Out[2]: ('female', 0.5270351910587524)

In [3]: ngender.guess('林愈静') # 其实他是男的,哈哈
Out[3]: ('female', 0.7403386956816094)

synonyms

获取近义词,中文的效果比较好,英文就算了。传送门🚪
synonyms 可以用于自然语言理解的很多任务:文本对齐,推荐算法,相似度计算,语义偏移,关键字提取,概念提取,自动摘要,搜索引擎等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
>>> synonyms.display('唱')
'唱'近义词:
1. 唱:1.0
2. 演唱:0.7798535
3. 合唱:0.74875516
4. 唱歌:0.73426175
5. 唱出:0.7305354
6. 会唱:0.6931748
7. 独唱:0.6847898
8. 对唱:0.6706482
9. 歌:0.6597439
10. 伴奏:0.6514814
>>> synonyms.display('跳')
'跳'近义词:
1. 跳:1.0
2. 跳跃:0.71174157
3. 跳起:0.6937497
4. 甩:0.6778911
5. 踩:0.6361235
6. 翻滚:0.63477707
7. 起跳:0.6323423
8. 跳到:0.6322503
9. 跳出:0.6208772
10. 翻:0.5786449
>>> synonyms.display('rap')
'rap'近义词:
1. rap:1.0
2. Rap:0.68070287
3. 饶舌:0.61240023
4. 抒情歌:0.50114965
5. Pop:0.4892355
6. 冷笑话:0.43908414
7. 混搭:0.42578876
8. Try:0.38343385
9. </s>:0.18291898
10. Pardosa:0.072175615
>>> synonyms.display('篮球')
'篮球'近义词:
1. 篮球:1.0
2. 排球:0.7600746
3. 美式足球:0.74696124
4. 棒球:0.7270616
5. 田径:0.7249465
6. 橄榄球:0.711521
7. 曲棍球:0.6887209
8. 篮球员:0.68223953
9. 打球:0.6769222
10. 篮球比赛:0.65966946
>>> synonyms.display('律师')
'律师'近义词:
1. 律师:1.0
2. 辩护律师:0.755538
3. 法官:0.7460084
4. 会计师:0.7136092
5. 检察官:0.6903115
6. 大律师:0.6764993
7. 法律顾问:0.66502166
8. 律师事务所:0.65426826
9. 代理人:0.6481638
10. 作证:0.6134831
>>> synonyms.display('函')
'函'近义词:
1. 函:1.0
2. 公文:0.5337878
3. 下述:0.50887656
4. 等价:0.5005928
5. 实例:0.4872502
6. 虚:0.4857229
7. 恒等:0.46181267
8. 逆:0.44781372
9. 可执行:0.4390271
10. 由此可知:0.38569006
>>>

mypy

mypy 是用于检查注解的,传送门🚪

py 3.5+ 出现了函数注解,用于标注函数的参数类型以及返回值类型:

在 sublime 中可以搭配插件使用:传送门🚪

自动检查有注解的函数,调用时是否符合函数的注解规定:

美滋滋~


来呀快活呀


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!