背景
OCR識別的字符串中,日期類型存在字符串中,需要提取出來,并格式化
環境以及依賴package
NStudyPy==0.0.12
NStudyPy 工具包 , 一個有用的工具包,可以簡化開發流程,詳細介紹可以參考 NStudyPy
本教程使用python 3.10.13
作為開發環境 , 原則上適用于python 3.9+
本教程開發環境為windows 10
,原則上其他系統應該也可以 , 但請注意需要安裝對應環境的 poppler, 同時需注意配置環境變量
, 環境變量配置請參閱本站其他文檔
!!本站支持全文搜索。
主要流程
- 創建項目,安裝依賴
pip install NStudyPy==0.0.12
- 調用方法
from NStudyPy import PyDate# 示例日期字符串
date_strs = ['有效2024-06-18', "日期:2024-06-18結束", '2024-06-18有效','日期:2024/06/18', '2024/6/18', '2024年06月18日','日期2024年6月8日', '24年6月8日', '024年6月8日',
]for d in date_strs:print(f"原始日期字符串:{d}\t\t 格式化后字符串:\t\t{PyDate.format_date(d)}")
- 核心源碼
_reg_date = re.compile(r'(\d{2,4}).*?(\d{1,2}).*?(\d{1,2})')def format_date(date_str: str) -> str:"""格式化日期字符串:param date_str: 任意包含日期的字符串:return: 格式化后的日期字符串 yyyy-mm-dd日"""match = _reg_date.search(date_str)if match:year, month, day = match.groups()if len(year) == 2:year = '20' + yearelif len(year) == 3:year = '2' + yearreturn f"{year}-{month.zfill(2)}-{day.zfill(2)}"else:return None