一、分词 - jieba
- 优秀的中文分词库,依靠中文词库,利用词库确定汉子之间关联的概率,形成分词结果
importjiebaword='伟大的中华人民共和国'jieba.cut(word) jieba.lcut(word)
二、词云库 - wordcloud
- 对数据中出现频率较高的
关键词
生成的一幅图像,予以视觉上的突出
importjiebaimportnumpyasnpimportPIL.ImageasImagefromwordcloudimportWordClouddefrun(word_path, picture_path): withopen(word_path, 'r') asf: word=f.read() cut_word=' '.join(jieba.cut(word)) color_mask=np.array(Image.open(picture_path)) word_cloud=WordCloud( # 设置字体,不指定就会出现乱码font_path='/System/Library/Fonts/PingFang.ttc', # 设置背景色background_color='white', # 词云形状mask=color_mask, # 允许最大词汇max_words=120, # 最大号字体max_font_size=2000 ).generate(cut_word) word_cloud.to_file('word_cloud.jpg') im=word_cloud.to_image() im.show()
三、可视化进度条 - tpdm
- 好看的进度条,不仅会让人一眼就知道任务的进度,还能够让自己的心情愉悦
fromtimeimportsleepfromtqdmimporttqdm# 这里同样的,tqdm就是这个进度条最常用的一个方法# 里面存一个可迭代对象foriintqdm(range(1, 500)): # 模拟你的任务sleep(0.01) sleep(0.5)
四、优美的表格 - PrettyTable
- 可以让你在命令行打印出优美的表格
importprettytableaspt# 按行添加数据tb=pt.PrettyTable() tb.field_names= ['name', 'age', 'height', 'weight'] tb.add_row(['亮仔', 25, 174, 65]) tb.add_row(['程序员', 23, 164, 55]) tb.add_row(['程序员亮仔', 27, 184, 69.5]) print(tb) # +-----------+-----+--------+--------+# | name | age | height | weight |# +-----------+-----+--------+--------+# | 亮仔 | 25 | 174 | 65 |# | 程序员 | 23 | 164 | 55 |# | 程序员亮仔 | 27 | 184 | 69.5 |# +-----------+-----+--------+--------+
五、多进程 - multiprocessing
- 创建多进程
frommultiprocessingimportProcessdeffunc(s): print(s) if__name__=='__main__': process= [ Process(target=func, args=('1', )) Process(target=func, args=('2', )) ] [p.start() forpinprocess] [p.join() forpinprocess]
六、多线程 - threading
- 创建多线程
importthreadingdeffunc(s): print(s) if__name__=='__main__': thread= [ threading.Thread(target=func, args=('1', )) threading.Thread(target=func, args=('2', )) ] [t.start() fortinthread] [t.join() fortinthread]
七、谷歌翻译 - googletrans
- 自动语言检测,批量翻译,语言检测等
fromgoogletransimportTranslatortranslator=Translator() # 未提供源语言以及翻译的最终语言,会自动翻译成英文translator.translate('안녕하세요.') # 告诉它翻译成什么语言translator.translate('안녕하세요.', dest='ja') # 告诉它源语言是什么translator.translate('程序员亮仔', src='zh-cn') # 语言检测t=ttranslator.detect('이 문장은 한글로 쓰여졌습니다.') t.lang
八、重复回调 - retrying
- 如果请求失败,我们需要再重新进行进行请求,防止请求异常导致数据缺失
fromretryingimportretrystop_max_attempt_number=5) (defsay(): try: cxyliangzaiexceptExceptionase: # 可以将错误记录日志print(e) raisesay()
九、游戏开发 - pygame
- 实现 python 游戏的开发,可以开发各种大小型游戏
importpygame, sysfrompygame.localsimport*# 初始化pygamepygame.init() # 设置窗口的大小,单位为像素screen=pygame.display.set_mode((500,400), 0, 32) # 设置窗口的标题pygame.display.set_caption('用户事件监控') # 设置背景screen.fill((255, 255, 255)) # 程序主循环whileTrue: # 获取事件foreventinpygame.event.get(): # 判断事件是否为退出事件ifevent.type==QUIT: # 退出pygamepygame.quit() # 退出系统sys.exit() # 获得键盘按下的事件 ifevent.type==KEYDOWN: if(event.key==K_UPorevent.key==K_w): print("上") if(event.key==K_DOWNorevent.key==K_s): print("下") if(event.key==K_LEFTorevent.key==K_a): print("左") if(event.key==K_RIGHTorevent.key==K_d): print("右") # 按下键盘的Esc键退出if(event.key==K_ESCAPE): # 退出pygamepygame.quit() # 退出系统sys.exit() # 获得鼠标当前的位置 ifevent.type==MOUSEMOTION: print(event.pos) # 获得鼠标按下的位置ifevent.type==MOUSEBUTTONDOWN: print("鼠标按下:", event.pos) # 获得鼠标抬起的位置ifevent.type==MOUSEBUTTONUP: print("鼠标抬起:", event.pos) # 绘制屏幕内容pygame.display.update()
十、绘图教程 - turtle
- 可以画出各种各样奇妙的图案,简直就是程序中的画板
fromturtleimport*colors= ['red', 'purple', 'blue', 'green', 'yellow', 'orange'] forxinrange(360): pencolor(colors[x%6]) width(x/100+1) forward(x) left(59)
十一、数据分析 - pandas
- 数据分析处理库,为解决数据分析任务而创建的,能够快速便捷地处理数据的函数和方法
importpandasaspdinfo=pd.read_csv("students.csv", encoding="utf-8") # 查看数据框的一些属性:最大、最小、均值、四分位数等info.describe() # 空值相关的操作pin=info["pin"] pin_isnull=pd.isnull(pin) pin_isnull_list=info[pin_isnull] len(pin_isnull_list) # 缺失值相关操作, 简单的处理办法就是过滤掉null值books=info["life_cycle_books"] book_isnull=pd.isnull(books) book_list_isnull=info["life_cycle_books"][book_isnull==False] mean=sum(book_list_isnull) /len(book_list_isnull) # 删除缺失值, 所有行na_info=info.dropna(axis=1) # 删除缺失值, 可以指定列na_info=info.dropna(axis=0, subset= ["age", "name"])
十二、算法加密 - pycryto
- pycryto 能实现大致 3 种类型的数据加密(单向加密、对称加密 和非对称加密),产生随机数,生成密钥对,数字签名
fromCrypto.HashimportSHA256hash=SHA256.new() hash.update('Hello, World!') # 使用digest()方法加密digest=hash.digest() # 使用hexdigest()方法加密,该方法加密后是16进制的hexdigest=hash.hexdigest() print(digest, hexdigest)
十三、操作 win 电脑 - pywin32
- pywin32 包装了 Windows 系统的 Win32 API,能创建和使用 COM 对象和图形窗口界面
importwin32apiimportwin32conhid=win32gui.WindowFromPoint((100, 100)) # 获取窗口标题title=win32gui.GetWindowText(hid) # 获取窗口类名class_name=win32gui.GetClassName(hid) # 模拟鼠标在(400, 500)位置进行点击操作point= (400, 500) win32api.SetCursorPos(point) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0)
十四、自动程序测试 - Selenium
- Selenium 是一个用于 Web 应用程序测试的工具。Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样
fromseleniumimportwebdriverfromselenium.webdriverimportActionChainsfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.waitimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasEC# 初始化谷歌浏览器driver=webdriver.Chrome() # 最大化窗口driver.maximize_window() # 打开头条登陆网址driver.get('https://sso.toutiao.com') # 等待某个元素是否出现WebDriverWait(self.driver, 10).until( EC.text_to_be_present_in_element((By.XPATH, '//*[@id="mobile-code-get"]/span'), u'发送') ) # 实例化鼠标操作action=ActionChains(self.driver) # 按住滑块action.click_and_hold(self.driver.find_element_by_xpath('//*[@id="captcha_container"]')).perform() # 将滑块移动x的距离action.move_by_offset(xoffset=x, yoffset=0).perform() # 释放滑块action.release().perform()
十五、音频播放 - mp3play
- 一款超级小型的音频操作库,可以实现播放音乐,按空格键实现暂停和播放的切换
importmp3playclip=mp3play.load('music.mp3') clip.play()
十六、网页解析 - BeautifulSoup
- 是一个网页解析库,能够快速的分析网页结构
frombs4importBeautifulSoupsoup=BeautifulSoup('<p class="name nickname user"><b>i am cxyliangzai</b></p>', 'html.parser') #获取整个p标签的html代码print(soup.p) #获取b标签print(soup.p.b) #获取p标签内容,使用NavigableString类中的string、text、get_text()print(soup.p.text) #返回一个字典,里面是多有属性和值print(soup.p.attrs) #查看返回的数据类型print(type(soup.p)) #根据属性,获取标签的属性值,返回值为列表print(soup.p['class']) #给class属性赋值,此时属性值由列表转换为字符串soup.p['class']=['Web','Site'] print(soup.p)
十七、日志处理 - logging
- 打印和记录日志
importlogginglogging.basicConfig(filename='logging.text', level=logging.DEBUG) logging.debug('It is a debug') logging.info('It is a info') logging.warning('It is a warning')
十八、图像处理 - PIL
- 非常适合于图像归档以及图像的批处理任务。可以使用 PIL 创建缩略图,转换图像格式,打印图像等等
fromPILimportImageim=Image.open("picture.jpg") new_im=im.convert('L') print(new_im.mode) new_im.show()
十九、发送邮件 - yagmail
- 是一种非常简单用来实现自动发邮件功能的包,可以实现给单人或者多人同时发送邮件
importyagmail# 链接邮箱服务器yag=yagmail.SMTP( user='邮箱地址', password='登录密码', host='smtp.163.com') # 邮箱正文contents= ['邮件第一行内容', '邮件第二行内容', '邮件第三行内容'] # 给用户发送邮件并添加多个附件yag.send(['目标邮箱地址1', '目标邮箱地址2', '目标邮箱地址3'], '邮件标题', contents, ['c://附件.pdf', 'c://picture.jpg'])
二十、源码打包 - pyinstaller
- 将源码打包成exe文件,直接在window上运行
pyinstaller-F-w-p ./lib-ilogo.icomain.py