几种类
datetime.striptime() 计算两个字符串之间的时间差
datetime.striptime()计算两个字符串之间的时间差
datatime类提供函数处理日期和时间
Striptime()分析字符串值以固定格式表示时间然后存储为函数参数
输出就是:
time.sleep()
time模块打印时间按照对象数字和字符串进行,sleep()仅在指定的一段时间暂停执行,用time.sleep(20)来计算实际上的时间差
datetime.timedelta()
datetime类提供类和函数,处理日期、时间、时间间隔
timedelta()特定的持续时间或两个日期和时间之间的差异,包含天、毫秒、微妙、秒、分钟、小时、周
这一点可以作为参考,日志中的时间计算了后面几位数
计算两个不同时间的持续时间。
也有用于计算特定时区
python自动提取文本中的时间(包含中文日期)
使用Python自动化提取文本中的时间可以分成以下几个步骤:
- 将文本中出现的时间字符串通过正则表达式或第三方库进行提取。
- 将提取出的时间字符串进行解析和格式化,得到标准的时间格式数据。
- 对于中文日期需要进行额外的处理,例如将“两天前”、“昨天”、“今天”等关键词转化为具体日期。
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