文章目录
一.引入
本篇用于记录我在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
2.snownlp_stopwords.txt
3.pyhanlp_stopwords.txt
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')
效果
具体参考
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.分块下载文件