python实用小方法

枫铃3年前 (2021-09-30)Python260

一、创建随机字母

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)

三、判断元素是否为数字

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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"))

六、精确处理数字

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 精确处理数字
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

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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)

十二、判断中文

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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 http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

十五、生成随机ChromeAgent

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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)

十七、流下载大文件

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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

相关文章

如何改变 Python 中线程的执行顺序

如何改变 Python 中线程的执行顺序

一、主线程会等待所有的子...

超详细 1小时学会Python输入和输出!

超详细 1小时学会Python输入和输出!

1.Hello world 安装完Python之后,打开IDLE(Python GUI) ,该程序是Python语言解释器,你写...

四种高性能数据类型,Python collections助你优化代码、简洁任务

四种高性能数据类型,Python collections助你优化代码、简洁任务

在这篇文章中,机器学习工程师 George Seif 介绍了 Python collections 模块最受欢迎的四种数据类型以及它们各自的使用...

python 中有趣的库tqdm

Tqdm 是 Python 进度条库,可以在 Python 长循环中添加一个进度提示信息用法:tqdm(iterator) 方法...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。