python实用小方法
一、创建随机字母
import random # 创建随机字母 def make_code(n): res = '' for i in range(n): num = str(random.randint(1, 9)) # 随机选取1到9的一个整数 letter = chr(random.randint(65, 90)) # 随机选大写英文的一个字母 group = random.choice([num, letter]) # 随机选取整数还是大写字母 res += group # 循环次数加到空字符串中 return res
print(make_code(4))
二、glob正则匹配出需要的文件
# 正则匹配出需要的文件 import glob path = r"D:\PycharmProjects\maple\face" for name in glob.glob('{}\*[0-9].*'.format(path)): print(name) # 结果 # D:\PycharmProjects\maple\face\Myface1.jpg # D:\PycharmProjects\maple\face\Myface2.jpg # D:\PycharmProjects\maple\face\Myface3.jpg # D:\PycharmProjects\maple\face\Myface4.jpg # D:\PycharmProjects\maple\face\Myface5.jpg
# 匹配多种后缀名
res=glob.glob('{}\*.*[xlsx|XLS]'.format(r"********"))
print(res)
三、判断元素是否为数字
import numpy as np # 判断元素是否为数字 def is_number(s): try: if np.isnan(s) or s == False or s == True: return False except Exception: pass try: # 判断是否为浮点数 float(s) return True except Exception: pass try: import unicodedata # 处理ASCii码的包 # 把一个表示数字的字符串转换为浮点数返回的函数 unicodedata.numeric(s) return True except (TypeError, ValueError): pass return False numbers = [12, "43", "地方", None, np.nan, 88.99, False, True] print([is_number(i) for i in numbers]) # 结果 # [True, True, False, False, False, True, False, False]
五、格式化
# 格式化10进制 print(format(10,"b")) # 格式化8进制 print(format(10,"o")) # 格式化16进制 print(format(10,"x"))
六、精确处理数字
# 精确处理数字 a=1.1 b=3.2 print(a+b) from decimal import Decimal a=Decimal('1.1') b=Decimal('3.2') print(a+b)
七、正则匹配
# 正则匹配 import re # 邮箱 res1='email1:378533872@qq.com email2:333312312@163.com eamil3:alexsb123@gmail.com' res=re.findall('\d+@\w+\.\w+',res1) print(res) # 数字 res2="1-12*(60+(-40.35/5)-(-4*3))" res=re.findall('(\d+\.\d+|\d+)',res2) print(res)
八、flask-web
from aiohttp import web async def index(request): return web.Response(text='Hello World') async def api(request): data = await request.json() question = data['question'] return web.json_response({"state":question}) app = web.Application() app.add_routes([web.get('/', index), web.post('/api', api)]) if __name__ == '__main__': web.run_app(app, host='127.0.0.1', port=5000)
九、unicode转换
s="\u4E1C\u65B9\u8BC1\u5238" print(s.encode('unicode_escape').decode('unicode_escape')) #东方证券
十、repr()的应用
d=datetime.datetime(2020,1,2,0,0) print(d) #2020-01-02 00:00:00 print(repr(d)) #返回该对象名字的str #datetime.datetime(2020, 1, 2, 0, 0)
十一、节假日判断
#安装pip install chinesecalendar from chinese_calendar import is_holiday today = datetime.datetime.now() res=is_holiday(today) print(res)
十二、判断中文
def is_Chinese(word): for ch in word: if '\u4e00' <= ch <= '\u9fff': return True return False def is_number(word): res = re.search("^[0-9]*$", word) if res: return True return False
十三、判断文件的编码格式
import chardet with open(r"*****","rb") as f: print (chardet.detect(f.read()))
十四、pip加速
pip install scrapy -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
python -m pip install paddlepaddle==2.0.0b0 -i https://mirror.baidu.com/pypi/simple
十五、生成随机ChromeAgent
import random first_num = random.randint(55, 62) third_num = random.randint(0, 3200) fourth_num = random.randint(0, 140) class FakeChromeAgent: 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) @classmethod def get_agent(cls): return ' '.join(['Mozilla/5.0', random.choice(cls.os_type), 'AppleWebKit/537.36', '(KHTML, like Gecko)', cls.chrome_version, 'Safari/537.36'] ) print(FakeChromeAgent.get_agent())
十六、获取本地mac地址
import uuid # 获取mac地址 addr_num = hex(uuid.getnode())[2:] mac = "-".join(addr_num[i: i + 2] for i in range(0, len(addr_num), 2)) print(mac)
十七、流下载大文件
import requests url = "http://wx4.sinaimg.cn/large/d030806aly1fq1vn8j0ajj21ho28bduy.jpg" rsp = requests.get(url, stream=True) with open('1.jpg', 'wb') as f: for i in rsp.iter_content(chunk_size=1024): # 边下载边存硬盘, chunk_size 可以自由调整为可以更好地适合您的用例的数字 f.write(i)
十八、redis有序集合实现权重取值
import redis db_conn = redis.ConnectionPool(host="*.*.*.*", port=****, password="*****",db=0) redis_clint = redis.Redis(connection_pool=db_conn, max_connections=10) score=2 #分数值,数值越大,排序的时候越靠前 # 添加值 redis_clint.zadd("key_name", {"value001":score or 1}) # 大到小排序取值 res=redis_clint.zrevrange("key_name", 0, -1, withscores=False, score_cast_func=float) value=res[0].decode() # 判断数据是否存在,没有返回的None,有返回的是分数值 res=redis_clint.zscore("key_name",value) print(res) # 处理数据后,删除值 res=redis_clint.zrem("key_name",value) print(res)
十九、查找文件,删除文件
import os def find_file(dir="",file=""): for item in os.listdir(dir): print(item,file) if file in item: return os.path.join(dir,item) if os.path.isdir(os.path.join(dir,item)): res=find_file(os.path.join(dir,item),file) return res
二十、格式化日期有中文
import datetime datetime.datetime.now().strftime("%Y年%m月%d日 %H:%M".encode('unicode_escape').decode('utf8')).encode("utf-8").decode('unicode_escape')