python常用操作,每日一记

  • 时间和字符串互转

    import time
    
    # 字符串类型转时间戳
    time_array = time.strptime('2014-06-12', '%Y-%m-%d')
    time_stamp = time.mktime(time_array)
    print(time_stamp)
    
    # 数字转字符串
    day= time.strftime('%Y-%m-%d %H:%M',time.localtime(1199116800.0))
    print(day)
    
  • 列表字典排序

    from operator import itemgetter
    dict_list = [{"ming": 87}, {"mei": 93}, {"hua": 68}, {"jon": 75}, {"ston": 100}, {"jack": 56}]
    mid_dict = {key: value for x in dict_list for key, value in x.items()}
    mid_list = sorted(mid_dict.items(), key=itemgetter(1))
    fin_list = [{x[0]: x[1]} for x in mid_list]
    print(fin_list)
    print(fin_list[-1])
    
  • 列表生成式的加判断

    # 第一种只有一个条件if
    l = [i for i in range(1,10) if i%2==0]
    print(l)  # [2, 4, 6, 8]
    
    # 第二种,if...else
    l2 = ['偶数' if i%2==0 else i for i in range(1,10)]
    print(l2) # [1, '偶数', 3, '偶数', 5, '偶数', 7, '偶数', 9]
    
  • 相似度计算并排序

    from difflib import SequenceMatcher#导入库
    def similarity(a, b):
        return SequenceMatcher(None, a, b).ratio()#引用ratio方法,返回序列相似性的度量
    print(similarity('中国民族大学', '中国是世界上大学最多的国家'))  # 0.42105263157894735
    
    
    ## 计算相似度
    from operator import itemgetter
    import Levenshtein #编辑距离,计算两个字符串之间的编辑距离
    tmstatus_list=['商标申请中','商标已注册','商标无效']
    simaler_value = []
    for i in tmstatus_list:
        simaler_value.append({i:Levenshtein.ratio('看已经注册的sdfsadf', i)})
    # max_value = max(simaler_value)
    # max_value
    print(simaler_value) # [{'商标申请中': 0.0}, {'商标已注册': 0.3333333333333333}, {'商标无效': 0.0}]
    
    ## 字典值排序
    dict_list = simaler_value
    mid_dict = {key: value for x in dict_list for key, value in x.items()}
    mid_list = sorted(mid_dict.items(), key=itemgetter(1))
    fin_list = [{x[0]: x[1]} for x in mid_list]
    print(fin_list)  # [{'商标申请中': 0.0}, {'商标无效': 0.0}, {'商标已注册': 0.3333333333333333}]
    print([i for i in  fin_list[-1]]) # ['商标已注册']
    
  • FastApi跨域设置 ----》主文件设置

    import uvicorn
    from fastapi import FastAPI, Depends
    from fastapi.middleware.cors import CORSMiddleware
    
    origins = [
        "*"
    #     "http://127.0.0.1:6366",
    #     "http://localhost:6366",
    #     'http://127.0.0.1',
    #     'http://localhost'
    ]
    
    
    
    import v1
    from v1.Tool.PickKeys.routeStruct import Routenode, Route
    
    app = FastAPI(
        title="  这什么API ",
        description="Do what u imagine ",
        version="1.0.1",
        docs_url="/docs",
        redoc_url="/redoc"
        )
    # app.include_router(func_v1.router, prefix="/v1")
    app.include_router(v1.router, prefix="/v1")
    
    # 新增
    import auth
    app.include_router(auth.router,prefix="/auth")
    
    app.add_middleware(
        CORSMiddleware,
        allow_origins=origins, #设置允许的origins来源
        allow_credentials=True,
        allow_methods=["*"],  # 设置允许跨域的http方法,比如 get、post、put等。
        allow_headers=["*"],  # 允许跨域的headers,可以用来鉴别来源等作用。
    )
    
    if __name__ == "__main__":
        uvicorn.run("FastapiMain:app", 
                host="0.0.0.0", 
                port=6322,
                # reload=True
                )
    
  • 将DataFrame存入到MongoDB中

    # DataFrame存入mongodb
    import json
    conn2 = MongoClient('localhost',27017)
    db2 = conn2['company']
    coll2 = db2['company_qinquan']
    # data3 为dataframe
    coll2.insert(json.loads(data3.T.to_json()).values())
    
  • DataFrame设置索引

    # dataframe 新增一列
    data3['index'] = range(1,75164)
    # 设置索引
    data3.set_index(['index'])
    
  • pandas 读取excel 文件

    df = pd.read_excel('E:/wang/东莞协会会员信息统计表.xlsx',engine='openpyxl')
    
  • 生成11到1000的中文数字

    # 生成1 到  10000的中文数字
    
    # 数字映射
    number_map = {
        "0": "零",
        "1": "一",
        "2": "二",
        "3": "三",
        "4": "四",
        "5": "五",
        "6": "六",
        "7": "七",
        "8": "八",
        "9": "九"
    }
    # 例子
    ## 106 -----》 一百零六
    #  116 -----》 一百一十六
    # 34 -------》 三十四
    # 10 -------》 十
    # 238------》 二百三十八
    
    # 计算--------
    # # 百位数字
    # 304//100%10
    
    # # 十位数字
    # 304//10%10
    
    # # 个位数字
    # 304//1%10
    chinese_num = []
    for i in num:
        if i<=99:
            # 十位数字
            shiwei = i//10%10
            # 个位数
            gewei = i//1%10
            if shiwei != 1:
                if gewei!=0:
                    text = number_map.get(str(shiwei)) + '十' + number_map.get(str(gewei))
                    t = (text,3)
                    chinese_num.append(t)
                else:
                    text = number_map.get(str(shiwei)) + '十'
                    t = (text,2)
                    chinese_num.append(t)
            else:
                text ='十' + number_map.get(str(gewei))
                t = (text,2)
                chinese_num.append(t)
                
        elif i<999:
            # 百位数字
            baiwei = i//100%10
            # 十位数字
            shiwei = i//10%10
            # 各位数字
            gewei = i//1%10
            if shiwei!=0 and gewei!=0:
                text= number_map.get(str(baiwei)) + '百' + number_map.get(str(shiwei)) + '十' + number_map.get(str(gewei))
                t = (text,5)
                chinese_num.append(t)
            elif shiwei==0 and gewei!=0:
                text= number_map.get(str(baiwei)) + '百' + number_map.get(str(shiwei)) +  number_map.get(str(gewei))
                t = (text,4)
                chinese_num.append(t)
            elif shiwei!=0 and gewei==0:
                text= number_map.get(str(baiwei)) + '百' + number_map.get(str(shiwei)) +  '十'
                t = (text,4)
                chinese_num.append(t)
            else:
                text= number_map.get(str(baiwei)) + '百'
                t = (text,2)
                chinese_num.append(t)
        else:
            text = '一千'
            t = (text,2)
            chinese_num.append(t)
            
    print(chinese_num)
    
  • 判断是否是元组列表等对象

    # 元组
    i = (9,8)
    # 判断是否是元组
    flag = isinstance(i,tuple)
    
  • 列表分片,分页

    # list_原始列表,per每个小列表的里面的个数,输出以字典格式
    def cut_page(list_,per):
        list_of_group = zip(*(iter(list_),) * per)
        end_list = [list(i) for i in list_of_group]  # i is a tuple
        count = len(list_) % per
        end_list.append(list_[-count:]) if count != 0 else end_list
        dic = {}
        for i in range(1,len(end_list)+1):
            dic[str(i)] = end_list[i-1]
        return dic
    
    # d,l = cut_page([1,2,3,4,6],9)
    # print(d)
    # print(l)
    
  • url编码,解码

    from urllib.parse import quote
    text = quote('智能机器人', 'utf-8')
    print(text)
    
    
    from urllib.parse import unquote
    text = unquote(text, 'utf-8')
    print(text)
    
  • 文本去除html5 标签

    import re
    co = '<a href="//www.64365.com/fagui/article-640358.aspx" title="专利法" target="_blank" class="a-link">专利法</a>规定:当<a href="//www.64365.com/baike/zlqr/" title="专利权人" target="_blank" class="a-link">专利权人</a>的权利受到不法侵害时,可以请求<a href="//www.64365.com/baike/zl1/" title="专利" target="_blank" class="a-link">专利</a>'
    comp = re.compile('</?\w+[^>]*>')
    text_ = comp.sub('', co)
    print(text_)
    
  • 随机从列表取元素

    import random
    id_list = [1,2,9,6,3,8,7]
    # 随机取4个
    l = random.sample(id_list,4)
    print(l)
    
    # 随机取一个
    one = random.choice(id_list)
    print(one)
    
  • pandas 修改数据

    >>> df.loc[1,'name'] = 'aa' #修改index为‘1’,column为‘name’的那一个值为aa。
    >>> df.loc[1] = ['bb','ff',11] #修改index为‘1’的那一行的所有值。
    >>> df.loc[1,['name','age']] = ['bb',11]    #修改index为‘1’,column为‘name’的那一个值为bb,age列的值为11。
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小帆芽芽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值