【Python】读取时间判定操作次数问题和一些解决办法

news2024/11/22 16:23:34

几种类

datetime.striptime() 计算两个字符串之间的时间差

datetime.striptime()计算两个字符串之间的时间差

datatime类提供函数处理日期和时间

Striptime()分析字符串值以固定格式表示时间然后存储为函数参数

输出就是:

time.sleep()

time模块打印时间按照对象数字和字符串进行,sleep()仅在指定的一段时间暂停执行,用time.sleep(20)来计算实际上的时间差

datetime.timedelta()

datetime类提供类和函数,处理日期、时间、时间间隔

timedelta()特定的持续时间或两个日期和时间之间的差异,包含天、毫秒、微妙、秒、分钟、小时、周

这一点可以作为参考,日志中的时间计算了后面几位数

计算两个不同时间的持续时间。

也有用于计算特定时区

python自动提取文本中的时间(包含中文日期)

使用Python自动化提取文本中的时间可以分成以下几个步骤:

  1. 将文本中出现的时间字符串通过正则表达式或第三方库进行提取。
  2. 将提取出的时间字符串进行解析和格式化,得到标准的时间格式数据。
  3. 对于中文日期需要进行额外的处理,例如将“两天前”、“昨天”、“今天”等关键词转化为具体日期。

1 提取时间字符串,用re dateutil库

	import re
import datetime
	text = "2022-01-01 12:00:00, 2022-01-02 12:00:00, 2022-01-03 12:00:00"
	date_pattern = "\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}"
date_list = re.findall(date_pattern, text)
	for date_str in date_list:
    try:
        date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')
        print(date_obj)
    except ValueError:
        pass

定义包含时间字符串的文本变量text,正则表达式提取出所有时间格式的字符串保存到变量date_list,然后遍历字符串datetime.strptime转化为datatime类输出

dateutil库提取时间字符 对时间识别更准确,根据上下文自动识别不同的时间格式

	from dateutil import parser
	text = "2022-01-01 12:00:00, 2022-01-02 12:00:00, 2022-01-03 12:00:00"
	date_list = parser.parse(text, fuzzy=True)
	for date_obj in date_list:
    print(date_obj)

parser.parse解析成datetime对象

2 解析时间字符串

注意时区信息避免时区问题导致的时间错位

	from dateutil import parser
import pytz
	time_data = "2022-01-01 12:00:00"
	# 解析时间字符串,生成datetime对象
date_obj = parser.parse(time_data)
	# 将时间转化为指定时区
tz = pytz.timezone('Asia/Shanghai')
dt_with_tz = tz.localize(date_obj)
	# 将时间格式化为指定字符串
fmt = '%Y-%m-%d %H:%M:%S %Z%z'
time_str = dt_with_tz.strftime(fmt)
print(time_str)

自定义关键词映射表,借日期将具体各了多久的列出来

时间语义解析文本中的时间解析其含义

中文语义解析包:

https://gitcode.com/dongrixinyu/JioNLP/tree/master?utm_source=csdn_github_accelerator&isLogin=1

但是用得太杂

时间类型的实体识别,针对中文语义但不是纯英文,暂时不考虑

自然语言处理(NLP)之从文本中提取时间

哈工大pyltp

正则表达式提取文本中的年月日

def find_time(yanbao_txt, entity):
    paras = [para.strip() for para in yanbao_txt.split('\n') if para.strip()][:5]
    for para in paras:
        ret = re.findall(r'(\d{4})\s*[\./年-]\s*(\d{1,2})\s*[\./月-]\s*(\d{1,2})\s*日?', para)
        if ret:
            year, month, day = ret[0]
            time
 = '{}/{}/{}'.format(year, month.lstrip(), day.lstrip())
            return time
    return None

Python中从字符串中提取出日期和时间信息

先给出一个格式输入data结合split函数进行处理

Python 识别和提取文本中的日期的最佳方法

正则表达式re对日期识别和提取

import re

text = "我在2022年2月22日买了一辆新车。"
pattern = r"\d{4}年\d{1,2}月\d{1,2}日"

matches = re.findall(pattern, text)
if matches:
    for match in matches:
        print(match)
else:
    print("没有找到日期")

dateutil处理库解析多种日期格式然后将文本中的日期转换为datetime对象 

from dateutil import parser

text = "我在2022年2月22日买了一辆新车。"

date_obj = parser.parse(text, fuzzy=True, yearfirst=True)
print(date_obj)

NLTK自然语言处理库 

对文本进行分词然后识别出日期

import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

text = "我在2022年2月22日买了一辆新车。"

stop_words = set(stopwords.words("chinese"))
tokens = word_tokenize(text)
filtered_tokens = [word for word in tokens if word.lower() not in stop_words]

date_tokens = []
for token in filtered_tokens:
    if len(token) == 6 and token.isdigit():
        date_tokens.append(token[:4] + "-" + token[4:])

print(date_tokens)

【参考资料】

[1] Python 中计算两个时间字符串的时间差:https://www.delftstack.com/zh/howto/python/python-time-difference/#%e5%9c%a8-python-%e4%b8%ad%e4%bd%bf%e7%94%a8-timesleep-%e8%ae%a1%e7%ae%97%e4%b8%a4%e4%b8%aa%e6%97%b6%e9%97%b4%e5%ad%97%e7%ac%a6%e4%b8%b2%e4%b9%8b%e9%97%b4%e7%9a%84%e6%97%b6%e9%97%b4%e5%b7%ae

[2] Python 中带有时区的日期时间对象: https://www.delftstack.com/zh/howto/python/datetime-objects-with-timezone-in-python/

[3]  python自动提取文本中的时间(包含中文日期):https://pythonjishu.com/kjgytiaohcsklta/

[4] 时间语义解析工具 Python版,从文本中提取时间,并解析其含义,在线使用,时间语义识别:

https://blog.csdn.net/dongrixinyu/article/details/120245280

[5] 自然语言处理(NLP)之从文本中提取时间:

https://blog.csdn.net/jclian91/article/details/95916339

[6] Python中从字符串中提取出日期和时间信息:

https://blog.csdn.net/weixin_55267022/article/details/122583629

[7] Python 识别和提取文本中的日期的最佳方法:

https://deepinout.com/python/python-qa/613_python_best_way_to_identify_and_extract_dates_from_text_python.html

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

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

相关文章

python--递归算法篇

1、给定一个包含n1个整数的数组nums,其数字在1到n之间(包含1和n), 可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数 def repeat(ls:list) -> list:#把个数超过1的数&#xff0c…

AutoCAD 2024 安装注册教程

前言 大家好,我是梁国庆。 本篇分享的安装包是 AutoCAD 的全新版本——AutoCAD 2024,下文安装教程中简称 AutoCAD。 时间:2024年4月8日。 获取 AutoCAD 安装包 我已将本篇所使用的安装包打包上传至百度云,扫描下方二维码关注…

014:vue3 van-list van-pull-refresh实现上拉加载,下拉刷新

文章目录 1. 实现上拉加载,下拉刷新效果2. van-list,van-pull-refresh组件详解2.1 van-list组件2.2 van-pull-refresh组件 3. 完整案例4. 坑点:加载页面会一直调用加载接口 1. 实现上拉加载,下拉刷新效果 通过下拉刷新加载下一页…

DMA的认识

DMA介绍 Q:什么是DMA? DMA( Direct Memory Access,直接存储器访问 ) 提供在 外设与内存 、 存储器和存储器 、 外设 与外设 之间的 高速数据传输 使用。它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU ,在这个时间中&am…

Matlab与ROS(1/2)---Message(三)

0. 简介 消息是ROS中交换数据的主要容器。主题和服务使用消息在节点之间传输数据。为了标识其数据结构,每条消息都有一个消息类型。例如,来自激光扫描仪的传感器数据通常以sensor_msgs/LaserScan类型的消息发送。每种消息类型标识消息中包含的数据元素。…

汽车制造业PMC组态应用最佳实践

01案例及行业介绍 汽车制造工业是我国国民经济的重要支柱产业,汽车制造工厂一般包含冲压、焊装、涂装、总装四大车间。每辆汽车的生产过程被分解成很多加工任务下发给各个车间进行完成。车辆从冲压车间开始到总装车间结束一直进行不同类型的工序加工。 PMC即生产控…

docker 上达梦导入dump文件报错:本地编码:PG GBK,导入女件编码:PGGB18030

解决方案: 第一步进入达梦数据容器内部 docker exec -it fc316f88caff /bin/bash 第二步:在容器中 /opt/dmdbms/bin目录下 执行命令 cd /opt/dmdbms/bin./dimp USERIDSYSDBA/SYSDBA001 FILE/opt/dmdbms/ZFJG_LJ20240407.dmp SCHEMASZFJG_LJUSERIDSYSD…

ChatGPT基础(二) ChatGPT的使用和调优

文章目录 ChatGPT的特性采用关键词进行提问给ChatGPT指定身份提升问答质量的策略1.表述方式上的优化2.用"继续"输出长内容3.营造场景4.由浅入深,提升问题质量5.预设回答框架和风格 ChatGPT的特性 1.能够联系上下文进行回答 ChatGPT回答问题是有上下文的&…

微服务学习 Eureka注册中心

服务调用时候出现问题,当服务者很多时候,比如不同的端口。消费者如何找到服务者的地址?又如何判断服务者是否健康。 Eureka基本原理: 总结:如果有多个服务提供者,消费者该如何选择? 搭建Eureka注册中心: 1.…

django基于python的法院执法案件管理系统

本课题使用Python语言进行开发。代码层面的操作主要在PyCharm中进行,将系统所使用到的表以及数据存储到MySQL数据库中,方便对数据进行操作本课题基于WEB的开发平台,设计的基本思路是: 框架:django/flask 后端&#xff…

【YOLOv9改进[损失函数]】使用MPDIou回归损失函数帮助YOLOv9模型更优秀

本文中,第一部分概述了各种回归损失函数,当然也包括了今天的主角MPDIou。第二部分内容为在YOLOv9中使用MPDIou回归损失函数的方法。 1 回归损失函数(Bounding Box Regression Loss) 边界框回归损失计算的方法包括GIoU、DIoU、CI…

纯css实现switch开关

代码比较简单&#xff0c;有需要直接在下边粘贴使用吧~ html: <div class"switch-box"><input id"switch" type"checkbox"><label></label></div> css&#xff1a; .switch-box {position: relative;height: 25px…

全球媒体发稿:海外发稿数字期刊Digital Journal

全球媒体发稿&#xff1a;海外发稿数字期刊Digital Journal ​官网&#xff1a; digitaljournal.com 数字期刊&#xff0c;加拿大知名门户&#xff0c;月访量超过30万。 是一个全球媒体平台和内容合作伙伴&#xff0c;通过捕捉和报道第一&#xff0c;提升新闻周期中的声…

顶顶通呼叫中心中间件-SIP分机安全(mod_cti基于FreeSWITCH)

介绍 运行在公网的FreeSWITCH服务器&#xff0c;每天都会接收到很多恶意的呼叫请求和注册请求&#xff0c;尝试盗打电话。合理的配置可以防止电话给倒打&#xff0c;但是每天大量的攻击&#xff0c;会让FS产生很多日志&#xff0c;降低FreeSWITCH的处理能力&#xff0c;cti模块…

C语言--2048小游戏

需要用到EasyX图形库 #include <stdio.h> #include <stdlib.h> #include <time.h> #include<assert.h> #include <conio.h> #include <windows.h> #include<graphics.h> #include<string.h> #define ROW 4 /* 行数 */ #defin…

K-means和逻辑回归

逻辑回归 一个事件的几率是该事件发生的概率/该事件不发生的概率&#xff1a;P/&#xff08;1-P&#xff09; 对数几率是&#xff1a;log(P/&#xff08;1-P&#xff09;) **考虑对输入x分类的模型&#xff1a;**log(P/&#xff08;1-P&#xff09;)wx 则 Pexp(wx)/(exp(w*x)…

进口PFA容量瓶高纯透明聚四氟乙烯材质耐强酸碱PFA定容瓶

PFA容量瓶&#xff0c;也叫特氟龙容量瓶&#xff0c;是用于配制标准浓度溶液的实验室器皿&#xff0c;是有着细长颈、梨形肚的耐强腐蚀平底塑料瓶&#xff0c;颈上有标线&#xff0c;可直接配置标准溶液和准确稀释溶液以及制备样品溶液。 因其有着不易碎、材质纯净、化学稳定性…

应急响应-战前反制主机HIDSElkeid蜜罐系统HFish

知识点 战前-反制-平台部署其他更多项目&#xff1a; https://github.com/birdhan/SecurityProduct HIDS&#xff1a;主机入侵检测系统&#xff0c;通常会有一个服务器承担服务端角色&#xff0c;其他主机就是客户端角色&#xff0c;客户端加入到服务端的检测范围里&#xff…

ERA拓展之旅:2024香港Web3峰会聚焦全球Web3发展

2024年香港Web3大型峰会是一次令人难忘的体验。这次峰会吸引了来自世界各地的Web3爱好者和从业者齐聚一堂&#xff0c;共同探讨着Web3的未来发展方向与机遇。在这个热情洋溢的氛围中&#xff0c;展现了对Web3的热情&#xff0c;分享彼此的见解和理念&#xff0c;探讨了未来的行…

Vue3学习05 一些API

Vue3-API 其它 API【shallowRef 与 shallowReactive 】shallowRefshallowReactive总结 【readonly 与 shallowReadonly】readonlyshallowReadonly 【toRaw 与 markRaw】toRawmarkRaw 【customRef】 Vue3新组件【Teleport】【Suspense】【全局API转移到应用对象】【其他】 其它 …