Python之xToolkit库

news2024/12/23 5:24:31

文章目录

  • 一、xToolkit是什么?
  • 二、准备工作
    • 1.引入库
    • 2.导入数据
  • 三、使用
    • 时间模块-xdatetime
      • 判断时间格式是否正确
      • get方法
        • 获取时间戳
        • 获取年月日时分秒
        • 时间推移计算
        • 时间替换
        • 时间扩展
          • 两个时间的差值
          • 开始与结束时间
          • 时间是否在指定区间中
    • 字符串模块-xstring
      • 字符串格式校验
      • 多种姿势的字符串处理
    • 多线程模块-xthread
    • 列表模块-xlist
      • 值的频率
    • 文件模块-xfile


一、xToolkit是什么?

xToolkit是python内置库的一个扩展库.把python的datetime,string,list,dist等数据结构重新进行了封装,扩展了部分功能.

库xToolkit的中文名字叫X工具集.是python内置库的一个扩展库.把python的datetime,string,list,dist等数据结构重新进行了封装,扩展了部分功能.
说明文档:https://www.showdoc.com.cn/xToolkit?page_id=2133295307421808

二、准备工作

1.引入库

代码如下(示例):

pip install xToolkit -i https://mirrors.aliyun.com/pypi/simple/

更新

升级方法
pip install --upgrade xToolkit -i https://mirrors.aliyun.com/pypi/simple/

2.导入数据

from xToolkit import xstring, xdatetime, xthreading, xlise, xfile

三、使用

时间模块-xdatetime

判断时间格式是否正确

支持判断的类型包括 date,datetime,time,int,float,str 其他类型默认为False

# 判断时间格式"1988-07-20"是否合规
xdatetime.shape("1988-07-20")
>>True

# 判断时间格式"1988-07-88"是否合规
xdatetime.shape("1988-07-88")
>>False

# 判断时间格式"98787987"是否合规
xdatetime.shape("98787987")
>>True

xdatetime.shape("2020-03-")
>> False

xdatetime.shape("english")
>> False

xdatetime.shape("258741")
>> True

xdatetime.shape("2020/03/20T10:09:06.252525+0800")
>> True

xdatetime.shape(datetime.datetime(2020, 9, 29, 8, 12))
>> True

xdatetime.shape(datetime.date(2020, 9, 29))
>> True

xdatetime.shape(datetime.time(8, 9, 29))
>> True

get方法

并且创建的方法还比较多,可以传入时间戳,时间字符串,datetime对象,date对象等

# 时间戳方法
xdatetime.get(98787987)
>> 1973-02-17T17:06:27+08:00


#字符串方式
xdatetime.get("1988-07-20")
>> 1988-07-20T00:00:00

# datetime对象
xdatetime.get((datetime(2020, 3, 23, 21, 56, 12))
>> 2020-03-23T21:56:12

# date对象等
xdatetime.get(date(2020, 3, 23))
>> 2020-03-23T00:00:00

获取时间戳
# 此方法获取的时间戳没有微妙部分,如果需要获取微妙部分,用time.time()
xdatetime.get().timestamp
>> 1585833834.0

xdatetime.get("2020-04-02 21:26:54").timestamp
>> 1585834014.0
获取年月日时分秒
# 年
xdatetime.get().year
>> 2020

# 月
xdatetime.get().month
>> 4

# 日
xdatetime.get().day
>> 2

# 时
xdatetime.get().hour
>> 21

# 分
xdatetime.get().minute
>> 37

# 秒
xdatetime.get().second
>> 48

# 微妙
xdatetime.get().microsecond
>> 70815


# 星期
xdatetime.get().weekday
# 返回数字 1-7代表周一到周日
>> 5

# 周
xdatetime.get().weed
# 返回整数代表,当前是本年第多少个周
>> 35

时间推移计算

shift方法获取某个时间之前或之后的时间,
关键字参数:years, months, days, hours,minutes,seconds,microseconds, weeks

# 一年以前
xdatetime.get().shift(years=-1)
>> 2019-04-03T21:10:49.095790+08:00

# 一年以后
xdatetime.get().shift(years=1)
>> 2021-04-03T21:10:49.095790+08:00

#一个月之后
xdatetime.get().shift(months=1)
>> 2020-05-03T21:12:17.332790+08:00

#一天以后
xdatetime.get().shift(days=1)
>> 2020-04-04T21:14:30.914443+08:00

#一个小时以后
xdatetime.get().shift(hours=1)
>> 2020-04-03T22:14:08.301192+08:00

#一分钟以后
xdatetime.get().shift(minutes=1)
>> 2020-04-03T21:17:27.956196+08:00

#一秒钟以后
xdatetime.get().shift(seconds=1)
>> 2020-04-03T21:16:45.380686+08:00

#一毫秒以后
xdatetime.get().shift(microseconds=1)
>> 2020-04-03T21:16:58.252929+08:00

#一周以后
xdatetime.get().shift(weeks=1)
>> 2020-04-10T21:17:11.827210+08:00


时间替换

替换datetime对象,年月日时分秒某一部分,返回一个被替换后的datetime对象,原对象不变
关键字参数:year, month, day, hour,minute,second,microsecond

# 把年替换会成2018
xdatetime.get().replace(year=2018)
>> 2018-04-03T21:23:42.819295+08:00

# 把月替换会成10
xdatetime.get().replace(month=10)
>> 2018-10-03T21:23:42.819295+08:00

# 把日替换会成7
xdatetime.get().replace(day=7)
>> 2018-04-07T21:23:42.819295+08:00

# 把时替换会成22
xdatetime.get().replace(hour=22)
>> 2018-04-03T22:23:42.819295+08:00

# 把分替换会成21
xdatetime.get().replace(minute=21)
>> 2018-04-03T21:21:42.819295+08:00

# 把秒替换会成21
xdatetime.get().replace(second=21)
>> 2018-04-03T21:23:21.819295+08:00

时间扩展
两个时间的差值

计算二个时间的差值,返回值为秒数
传入的二个时间格式包括,时间字符串,datetime,时间戳等

xdatetime.get("2020-04-28 10:52:52", "1988-07-20 17:31:12").how
>> 1002648100

xdatetime.get("2020-04-28", "1988-07-20 17:31:12").how
>> 1002608928

xdatetime.get("1975-04-28 14:14:55", "1988-07-20 17:31:12").how
>> -417496577

开始与结束时间

返回 指定时间中,年,月,周的开始时间和结束时间
类型genre Y->年,M->月,W->周
第一个参数:年
第二个参数:年月类型中,代表月,周类型代表周数

# 年
xdatetime.get(2020, 8, genre="Y").begin_end
>> ['2020-01-01', '2020-12-01']

xdatetime.get(2021, 5, genre="Y").begin_end
>> ['2021-01-01', '2021-12-01']

# 月
xdatetime.get(2020, 8, genre="M").begin_end
>> ['2020-08-01', '2020-08-31']

xdatetime.get(2021, 5, genre="M").begin_end
>> ['2021-05-01', '2021-05-31']

# 周
xdatetime.get(2020, 35, genre="W").begin_end
>> ['2020-08-24', '2020-08-30']

xdatetime.get(2021, 45, genre="W").begin_end
>> ['2021-11-08', '2021-11-14']

时间是否在指定区间中

计算时间是否在指定的时间区间内,返回值为bool型
需要传入二个参数,第一个为需要验证的字符串,第二个是一个时间列表,里面包含二个时间,开始时间和结束时间

xdatetime.get("2027-04-01", ["1988-04-14", "2020-05-14"]).middle
>> False
>
xdatetime.get("2020-04-15", ["2020-04-14", "2020-05-14 12:12:14"]).middle
>> True

字符串模块-xstring

导入

from xToolkit import xstring # 字符串模块

字符串格式校验

进行字符串格式效验,包括车牌格式,身份证号码,整形或浮点型,时间字符串,URL地址,手机号,银行卡,用户姓名,密码,邮箱。

# 车牌号
xstring.check("鄂A96288").is_car_number
>>True

# 身份证号码
# 提供中国大陆身份证验证,暂时只支持效验18位身份证
xstring.check("110101199003072316").is_identity_card
>>True

# 整形或浮点型
xstring.check("12.5").is_int_or_float
>>True


# 时间字符串
xstring.check("1988-07-20").is_datetime_string
>>True

# URL地址
xstring.check("https://wwww.baidu.com").is_url
>>True

# 手机号
xstring.check("15172383635").is_phone
>>True

# 银行卡
xstring.check("6222600260001072444").is_bank_number
>>True

# 用户姓名
# 姓名要求为2-4个中文
xstring.check("熊利宏").is_user_name
>>True

# 密码
# 包含6-18位字符,必须包含字母与数字,可以包含特殊字符
xstring.check("xlh123456").is_user_password
>>True

# 邮箱
# 第一种:只允许英文字母、数字、下划线、英文句号、以及中划线组成
# 第二种:名称允许汉字、字母、数字,域名只允许英文域名
xstring.check("xionglihong@163.com").is_mailbox
>>True

多种姿势的字符串处理

进行字符串处理,比如从身份证提取生日号码,性别等操作

xstring.dispose("11010119900307053X").get_identity_card(True)
>>{'code': '0000', 'msg': '身份证格式正确', 'data': {'birthday': '1990-03-07', 'gender': '男'}}

split 多标签分割

# 主要解决了系统模块split只能用一个分隔符
xstring.dispose("abc,我的-他的,1245*ss").split([",", "-", "*"])
>>['abc', '我的', '他的', '1245', 'ss']

主要解决了系统模块strip只过滤首尾空格

# 如果不传过滤参数,默认去掉所有空格
xstring.dispose("          鄂 A9 62 --8 8---__  ").strip()
>>鄂A962--88---__


xstring.dispose("          鄂 A9 62 --8 8---__  ").strip([" ", "-", "_"])
>> 鄂A96288

把字符串转换为emoji表情

emoji表情对应字符串:https://blog.csdn.net/wandugu/article/details/122102481

xstring.dispose('Python is :thumbs_up:').string_to_emoji()
>>Python is 👍

emoji表情转字符串

xstring.dispose('Python is 👍').emoji_to_string()
>>Python is :thumbs_up:

中文分词

# 分词对象 中国人民解放军海军工程大学

# 全模式:把文本中所有可能的词语都扫描出来,有冗余 cut_all=True
# ['中国', '中国人民解放军', '中国人民解放军海军', '国人', '人民', '人民解放军', '解放', '解放军', '海军', '海军工程大学', '军工', '工程', '大学']
# 精确模式:把文本精确的切分开,不存在冗余单词 cut_all=False
# ['中国人民解放军', '海军工程大学']
# 默认为精确模式

# 精确模式
xstring.dispose('中国人民解放军海军工程大学').part(cut_all=False)
>>['中国人民解放军', '海军工程大学']

# 全模式
xstring.dispose('中国人民解放军海军工程大学').part(cut_all=True)
>>['中国', '中国人民解放军', '中国人民解放军海军', '国人', '人民', '人民解放军', '解放', '解放军', '海军', '海军工程大学', '军工', '工程', '大学']

多线程模块-xthread

# 函数一
def function_1(a, b, c):
    time.sleep(1)
    return a * 2, b * 2, c * 2

# 函数二
def function_2(a, b):
    time.sleep(1)
    return a * 2, b * 2

# 函数三
def function_3(a):
    time.sleep(1)
    return a * 2

# 函数四
def function_4():
    time.sleep(1)
    return 0


st = time.time()
result = xthreading([function_1, 1, 1, 1], [function_2, 2, 2], [function_3, 2], [function_4])
print(result[0])
print(result[1])
print(result[2])
print(result[3])
et = time.time()
print("运行时间:{}".format(et - st))

>> (2, 2, 2)
>> (4, 4)
>> 4
>> 0
>> 运行时间:1.0010571479797363

# 从上面的运行时间可以看出,如果单线程执行应该是4秒以上,结果为1秒,说明运行时是多线程运行

列表模块-xlist

值的频率

from xToolkit import xlise # 列表模块
# 计算列表中值的频率
xlise.basics(["武汉", "武昌", "武汉", "无聊", "五菱", "武昌"]).values_count()
>>{'武昌': 2, '武汉': 2, '五菱': 1, '无聊': 1}

字典值替换

# 1.字典型列表的值整体替换
# 2.要求传入参数格式为 [{"id": None, "name": "wuhan"}, {"id": 5, "name": "中国"}, {"id": 25, "name": "上号"}, {"id": 5, "name": "测试"}]
# 3.这种形状的参数即可,比如可以传入 django 的 QuerySet 等
# 4.参数:
#    1.需要替换的对象
#    2.kwargs["rules"] 要求元祖,比如 ((None, ''), (45, 47)))

value = [{"id": None, "name": "wuhan"}, {"id": 5, "name": "中国"}, {"id": 25, "name": "上号"}, {"id": 5, "name": "测试"}]
xlise.basics(value).dict_to_value(rules=((None, ''), ("中国", "china")))
>>[{'id': '', 'name': 'wuhan'}, {'id': 5.0, 'name': 'china'}, {'id': 25.0, 'name': '上号'}, {'id': 5.0, 'name': '测试'}]

文件模块-xfile

导入:

from xToolkit import xfile

导入的excel表格的格式是这样的:
在这里插入图片描述

# excel转dict

# 1.传来的文件可以是文件路径,也可以是二进制文件
# 2.传来的可以是二进制文件,这里以django接收前端传来文件为例:
#     接收用 request.FILES.get("fileName", None) 传入 my_file 即可

# kwargs接收的参数有:
    # sheet索引,0代表第一个表,1代表第二个表,默认0
    # max表格最大的行数,默认2000行
    # min表格最小的行数,默认1行
    # title 表头(用于表头校验)

# 表头为选填,如果不填,不进行表头校验
xfile.read("./result/t_excel.xls").excel_to_dict()
>> [{'编号': 1, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},
    {'编号': 2, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},
    {'编号': 3, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},
    {'编号': 4, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},
    {'编号': 5, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},
    {'编号': 6, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1}
    ]

校验表头再进行读取

在这里插入图片描述

xfile.read("./result/t_excel.xls").excel_to_dict(title=["编号", "时间", "年龄", "分数", "总分"])
>> {'code': '0001', 'data': {'data': None}, 'msg': '表头第 3 列错误,错误值为 年龄1 应该为 年龄'}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1043779.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端任意修改地图风格颜色

在做地图相关应用时,常常遇到地图风格与UI界面不搭配的问题,如果在制图时就制作多种风格的地图,耗时耗力,超出成本控制。这里推荐一种快捷的方法,可在前端快速更改地图成任意风格,使色调与UI搭配。 先上一张…

软件项目费用计算方法

计算软件项目的费用是项目管理的关键组成部分之一。费用计算方法可以帮助您确定项目的总成本,包括开发、测试、维护和其他相关费用。以下是一些常见的软件项目费用计算方法,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发…

【51单片机】8-按键

1.按键相关知识 在按键未被按下之前,电路中默认为高电平【1】; 按键被按下后,电路中默认为低电平【0】 1.按键工作原理 1.内部机械结构 内部是没有电路的,电路在引脚上,看着4个引脚,实际上里面两个引脚相互…

暗猝灭剂BHQ-1 NHS,916753-61-2,BHQ-1 SE

产品简介:黑洞猝灭剂-1(BHQ-1)被归类为暗猝灭剂(一种非荧光发色团),被广泛用作各种荧光共振、能量转移(FRET)和DNA检测探针中,此类探针主要用于核酸分析及核酸结构研究。…

Docker export导出容器,重新运行导出的容器

需求 在部署程序时,程序内的人脸识别组件第一次运行需要去下载第三方软件包,下载好之后就不需要再进行下载了。由于程序最终部署在不能连接外网的服务器上,所以需要在能连接外网的服务器上先部署运行并下载相关组件。因此需要对容器进行导出&…

2023年【司钻(钻井)】考试题库及司钻(钻井)考试报名

题库来源:安全生产模拟考试一点通公众号小程序 司钻(钻井)考试题库考前必练!安全生产模拟考试一点通每个月更新司钻(钻井)考试报名题目及答案!多做几遍,其实通过司钻(钻…

Linux- 网络编程初探

原始套接字(Raw Socket) 原始套接字(Raw Socket)是一种提供较低级别网络访问的套接字。通过使用原始套接字,应用程序可以直接发送或接收网络层如IP的数据包,或者传输层如TCP、UDP的段,而无需通…

hive数据库操作,hive函数,FineBI可视化操作

1、数据库操作 1.1、创建数据库 create database if not exists myhive;use myhive;1.2、查看数据库详细信息 desc database myhive;数据库本质上就是在HDFS之上的文件夹。 默认数据库的存放路径是HDFS的:/user/hive/warehouse内 1.3、创建数据库并指定hdfs存…

PASCAL数据集说明

文章目录 一.PASCAL数据集简介1.图像分割 一.PASCAL数据集简介 Pascal VOC2012数据集主要是针对视觉任务中监督学习提供标签数据,它有四个大类别,可以细分为二十个小类别: Person:personAnimal:bird, cat, cow, dog,…

【软件设计师-中级——刷题记录4(纯干货)】

目录 进度管理工具Grantt图:程序语言基础:高级语言源程序模式: 每日一言:持续更新中... 个人昵称:lxw-pro 个人主页:欢迎关注 我的主页 个人感悟: “失败乃成功之母”,这是不变的道理…

统计的基本概念及抽样分布

文章目录 🍋引言🍋总体(Population)🍋总体参数 🍋样本(Sample)🍋随机样本🍋样本统计量 🍋统计量(Statistic)🍋…

印度市场最全开发攻略,收藏一篇就够了

一提到印度市场,很多外贸人都会感到望而却步,他们说做一个印度客户,就等于经历了人生的酸甜苦辣…… 然而,印度市场也是全球一块潜力无穷的大蛋糕,这体现在其庞大的人口和雄厚的银行资金上(这也是市场容量…

想学python找不到合适的书籍?它来了!入门python只需要这一本书就够了!

想学python找不到合适的书籍?看了视频还是不知如何下手? 《python王者归来》 它来了!由清华大学出版社出版!入门python只需要这一本书就够了! 【PDF版领取见文末】 这是一本python入门书。无论你是计算机专业的大学生…

愿你放飞梦想,国庆快乐!Wish you a happy National Day!

国庆节是一个国家为纪念自己而设立的法定节日。它们通常是国家独立 、宪法签署、国家元首诞生或其他重要纪念日,有些是国家守护神的圣日。National Day is a legal holiday made by a country to commemorate the country itself. They are usually the independenc…

vue3 + elementPlus实现select下拉框插入确定和取消按钮。

实现思路 Select 选择器 | Element Plus 1、select方法visible-change这个方法是下拉框出现/隐藏时触发,当显示的时候将两个按钮插入到下拉框里面,是基于原生插入DOM的这种方式; 2、通过vue3 ref获取selectDOM,在获取select的p…

Konva基本处理流程和相关架构设计

前言 canvas是使用JavaScript基于上下文对象进行2D图形的绘制的HTML元素,通常用于动画、游戏画面、数据可视化、图片编辑以及实时视频处理等方面。基于Canvas之上,诞生了例如 PIXI、ZRender、Fabric、Konva等 Canvas渲染引擎,兼顾易用的同时…

Java项目实战-查询用户列表接口服务搭建

概述 这里通过设计一个对用户进行增删改查的接口服务,来练习java项目工程化、Spring框架、Mybatis框架的实际应用 本项目目录 上一节初始化项目,已经controller层了,下方新建包:pojo、mapper、service pojo:所有的实体类都放这…

ternsor合并与分割

拼接:拆分:Cat、StackSplit、Chunk 1、cat(concat) 统计班级学生成绩: [class1-4, students, scores] [class5-9, students, scores] 将这九名学生的成绩进行合并 a torch.rand(4, 32, 8) b torch.rand(5, 32, 8…

A股风格因子看板 (2023.09 第09期)

该因子看板跟踪A股风格因子,该因子主要解释沪深两市的市场收益、刻画市场风格趋势的系列风格因子,用以分析市场风格切换、组合风格景露等。 今日为该因子跟踪第9期,指数组合数据截止日2023-08-31,要点如下 近1年A股风格因子收益走…

2023年最新电商某东app端sign签名算法与cipher加解密逆向分析(2023-09-26)

前言: 本文仅供学习交流,只提供关键思路不会给出完整代码,严禁用于非法用途,若有侵权请联系我删除!技术交流合作请私信! 一.工具的选择(抓包工具的选择,是门学问) 用…