Python3记录--个人常用函数及资源(持续更新)

一.引入

本篇用于记录我在Python中常用的函数。

二.列举

2.1清洗字符串

用于清理字符串中的特殊字符,可用于文件命名。

def clean_txt(str): 
    rstr = r"[\/\\\:\*\?\"\<\>\|]" 
    str = re.sub(rstr, "_", str) 
    return str

2.2字节格式化

将字节格式化为kb、mb、gb,可用于文件大小转换。

def format_size(self,bytes):
	try:
		bytes=float(bytes)
		kb=bytes/1024
		if kb>1024:
			mb=kb/1024
			if mb>1024:
				gb=mb/1024
				return '%.2fGB'%gb
			else:
				return '%.2fMB'%mb
		else:
			return '%.2fKB'%kb
	except:
		return 'error'

2.3UA随机生成

多用于爬虫。

def get_ua(self):
	first_num = random.randint(55, 62)
	third_num = random.randint(0, 3200)
	fourth_num = random.randint(0, 140)
	os_type = [
		'(Windows NT 6.1; WOW64)', '(Windows NT 10.0; WOW64)', '(X11; Linux x86_64)',
		'(Macintosh; Intel Mac OS X 10_12_6)'
	]
	chrome_version = 'Chrome/{}.0.{}.{}'.format(first_num, third_num, fourth_num)

	ua = ' '.join(['Mozilla/5.0', random.choice(os_type), 'AppleWebKit/537.36',
				   '(KHTML, like Gecko)', chrome_version, 'Safari/537.36']
				  )
	return ua

2.4停用词

用于去停用词处理。

1.自定义stopwords.txt

https://wwe.lanzoui.com/i24f9p49iab

2.snownlp_stopwords.txt

https://wwe.lanzoui.com/iLxyfp49kmf

3.pyhanlp_stopwords.txt

https://wwe.lanzoui.com/iYR2Bp49l7g

2.5正则匹配汉字

用于中文汉字的筛选。

def match_words(text):
    regex= r'[\u4e00-\u9fa5]+'
    words=re.findall(regex,text)
    return words

2.6输出彩色字体

print('\033[35;46m正常\033[0m')
print('\033[31;43m警告\033[0m')
print('\033[31;44m错误\033[0m')

效果
在这里插入图片描述
具体参考

https://www.cnblogs.com/wj-1314/p/7449812.html

2.7判断关键字是否在文本中出现

基于any()函数

keyword_list=['a','b','c',]
flag=any(True if keyword in text else False for keyword in keyword_list)

2.8谷歌翻译语言表

language_table={'auto': '自动选择', 'af': '南非荷兰语', 'sq': '阿尔巴尼亚语', 'am': '阿姆哈拉语', 'ar': '阿拉伯语', 'hy': '亚美尼亚语', 'az': '阿塞拜疆语', 'eu': '巴斯克语', 'be': '白俄罗斯语', 'bn': '孟加拉语', 'bs': '波斯尼亚语', 'bg': '保加利亚语', 'ca': '加泰罗尼亚语', 'ceb': '宿务语', 'zh': '中文(简体)', 'zh-TW': '中文(繁体)', 'co': '科西嘉语', 'hr': '克罗地亚语', 'cs': '捷克语', 'da': '丹麦语', 'nl': '荷兰语', 'en': '英语', 'eo': '世界语', 'et': '爱沙尼亚语', 'fi': '芬兰语', 'fr': '法语', 'fy': '弗里西语', 'gl': '加利西亚语', 'ka': '格鲁吉亚语', 'de': '德语', 'el': '希腊语', 'gu': '古吉拉特语', 'ht': '海地克里奥尔语', 'ha': '豪萨语', 'haw': '夏威夷语', 'he': '希伯来语', 'hi': '印地语', 'hmn': '苗语', 'hu': '匈牙利语', 'is': '冰岛语', 'ig': '伊博语', 'id': '印尼语', 'ga': '爱尔兰语', 'it': '意大利语', 'ja': '日语', 'jw': '爪哇语', 'kn': '卡纳达语', 'kk': '哈萨克语', 'km': '高棉语', 'ko': '韩语', 'ku': '库尔德语', 'ky': '吉尔吉斯语', 'lo': '老挝语', 'la': '拉丁语', 'lv': '拉脱维亚语', 'lt': '立陶宛语', 'lb': '卢森堡语', 'mk': '马其顿语', 'mg': '马尔加什语', 'ms': '马来语', 'ml': '马拉雅拉姆语', 'mt': '马耳他语', 'mi': '毛利语', 'mr': '马拉地语', 'mn': '蒙古语', 'my': '缅甸语', 'ne': '尼泊尔语', 'no': '挪威语', 'ny': '尼杨扎语(齐切瓦语)', 'ps': '普什图语', 'fa': '波斯语', 'pl': '波兰语', 'pt': '葡萄牙语', 'pa': '旁遮普语', 'ro': '罗马尼亚语', 'ru': '俄语', 'sm': '萨摩亚语', 'gd': '苏格兰盖尔语', 'sr': '塞尔维亚语', 'st': '塞索托语', 'sn': '修纳语', 'sd': '信德语', 'si': '僧伽罗语', 'sl': '斯洛文尼亚语', 'so': '索马里语', 'es': '西班牙语', 'su': '巽他语', 'sw': '斯瓦希里语', 'sv': '瑞典语', 'tl': '塔加洛语(菲律宾语)', 'tg': '塔吉克语', 'ta': '泰米尔语', 'te': '泰卢固语', 'th': '泰语', 'tr': '土耳其语', 'uk': '乌克兰语', 'ur': '乌尔都语', 'uz': '乌兹别克语', 'vi': '越南语', 'cy': '威尔士语', 'xh': '班图语', 'yi': '意第绪语', 'yo': '约鲁巴语', 'zu': '祖鲁语'}

2.9Tkinert函数中引入外部图片

基于面板(paned)组件

from tkinter import *
from tkinter import ttk
from PIL import ImageTk,Image
imgs=['Refresh.png']
class App:
    def __init__(self):
        self.w=Tk()
        self.paned = PanedWindow(self.w)
        self.img = imgs
        img = Image.open(self.img[0])
        photo = img.resize((50, 25))
        self.paned.image = ImageTk.PhotoImage(photo)
        self.button = ttk.Button(self.w, image=self.paned.image)
        self.button.pack()
        self.w.mainloop()

if __name__ == '__main__':
    App()

效果
在这里插入图片描述

2.10Tkinert窗口居中

from tkinter import *

class App:
    def __init__(self):
        self.w=Tk()
        width=300
        height=400
        left=(self.w.winfo_screenwidth()-width)/2
        top=(self.w.winfo_screenheight()-height)/2
        self.w.geometry('%dx%d+%d+%d'%(width,height,left,top))
        self.w.mainloop()

if __name__ == '__main__':
    App()

2.11时间戳转日期时间

def convert_to_datetime(timestamp):
	timeArray = time.localtime(timestamp)
	datetime= time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
	return datetime

2.12 B站AV号转BV号

alphabet = 'fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF'

def dec(x):
    #bv to av
    r = 0
    for i, v in enumerate([11, 10, 3, 8, 4, 6]):
        r += alphabet.find(x[v]) * 58**i
    return (r - 0x2_0840_07c0) ^ 0x0a93_b324

def enc(x):
    #av to bv
    x = (x ^ 0x0a93_b324) + 0x2_0840_07c0
    r = list('BV1**4*1*7**')
    for v in [11, 10, 3, 8, 4, 6]:
        x, d = divmod(x, 58)
        r[v] = alphabet[d]
    return ''.join(r)

2.13 获取当前所属星期

    def show_date(self):
        """
        展示日期信息,便于天气展示
        :return:
        """
        date = str(datetime.date.today())
        year,month,day=date.split('-')
        week_day_dict = {
            0: '星期一',
            1: '星期二',
            2: '星期三',
            3: '星期四',
            4: '星期五',
            5: '星期六',
            6: '星期日 ',
        }
        now=datetime.datetime.now()
        date_index = now.weekday()
        date_time=f'{year}{month}{day}{week_day_dict[date_index]}'
        return date_time

2.14 PyQT5 安装WebEngine

pip install PyQtWebEngine

2.15 解决最新Pyecharts无Map

pip install pyecharts==0.5.1

2.16 图片硬编码

import base64
def img_to_base64(filename):
    with open(filename, 'rb') as open_icon:
        b64str = base64.b64encode(open_icon.read())
        return b64str

2.17 py2与py3 pycharm正则快速替换

find:print (.*?);?$
replace:print\($1\)

2.18 快速提取url中的参数

def extractParams(url):
    parsed = urlparse.urlparse(url)
    querys = urlparse.parse_qs(parsed.query)
    querys = {k: v[0] for k, v in querys.items()}
    return querys

2.19 分块下载文件

import requests

link="http://www.xxxx/com/video/123.mp4"
file_name="123.mp4"
rsp = requests.get(link, stream=True)
chunk = 2048  # 每次读取2M,分块读取
with open(file_name, 'wb') as f:
    for i in rsp.iter_content(chunk):
         f.write(i)

三.总结


2021年5月13日
1.清洗字符串函数
2.字节格式化函数
3.UA随机生成函数


2021年5月14日
1.停用词资源
2.正则匹配汉字函数


2021年5月19日
1.输出彩色字体
2.判断关键字是否在文本中出现
3.谷歌翻译语言表


2021年5月31日
1.Tkinert函数中引入外部图片
2.Tkinert窗口居中


2021年8月15日
1.时间戳转日期时间


2021年9月3日
1.B站AV号转BV号


2021年9月22日
1.获取当前所属星期


2021年10月19日
1.PyQT5 安装WebEngine


2021年11月04日
1.解决最新Pyecharts无Map


2021年11月29日
1.图片硬编码


2022年7月12日
1.py2与py3 pycharm正则快速替换


2022年8月16日
1.快速提取url中的参数


2022年8月18日
1.分块下载文件


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值