扩展regex并支持日期时间格式代码的库。
datetime-matcher的Python项目详细描述
日期时间匹配器
datetime matcher是python模块,它支持regex的扩展,它允许 匹配、提取和重新格式化字符串化的日期时间。在
最值得注意的是,它提供了一个基本上结合re.sub
的函数,
datetime.strptime
,和datetime.strftime
标准库函数并执行所有操作
复杂的解析和连线。在
对于像批量重命名带有日期时间的文件这样的事情,它非常有用 文件名。但不要让我们告诉你什么是好的,你自己试试看!在
安装
现在从pypi那里通过运行
pip install datetime-matcher
使用日期时间重新格式化的字符串替换示例
假设我们有几个要重命名的文件名,格式如下:
^{pr2}$我们想把它们改成这样:
'20200310-MyLovelyPicture.jpg'
不干净的方法,没有日期时间匹配器
使用标准库re.sub
,我们遇到了一个问题:
text='MyLovelyPicture_2020-Mar-10.jpeg'search=r'(\w+)_([0-9]{4}-\w{3}-[0-9]{2})\.jpe?g'# ❌ messyreplace=r'(??????)-\1.jpg'# ❌ what do we put for ??????result=re.sub(search,replace,text)# ❌ This does't work
我们必须使用自定义解析器字符串手动运行datetime.strptime
,以提取
日期,然后在运行之前手动将其插入到替换字符串中
使用自定义替换字符串进行非泛型搜索和替换。在
恶心。在
使用datetime matcher
我们可以做下面的一个快速和容易的替代与重新格式化。在
fromdatetime_matcherimportDatetimeMatcherdtmatcher=DatetimeMatcher()text='MyLovelyPicture_2020-Mar-10.jpeg'search=r'(\w+)_%Y-%b-%d\.jpe?g'# ✅replace=r'%Y%m%d-\1.jpg'# ✅result=dtmatcher.sub(search,replace,text)# ✅# result == '20200310-MyLovelyPicture.jpg' # ✅
特点
该库具有一个类DatetimeMatcher
,它提供了以下功能
面向公众的方法:
sub
defsub(self,search_dfregex:str,replacement:str,text:str,count:int=0)->str
- 替换中搜索dfregex的匹配实例 给定文本与替换正则表达式,智能传输 从原始文本到替换文本的匹配日期 对于每个正则表达式匹配。在
- 如果没有找到匹配项,则返回原始文本。在
- 使用非零计数限制提取的数量。在
- 在dfregex字符串中使用strftime代码来提取/放置日期时间。在
match
defmatch(self,search_dfregex:str,text:str)->Optional[Match[AnyStr]]
- 确定文本是否与给定的dfregex匹配。在
- 如果找到,则返回相应的匹配对象,否则返回None。在
- 在dfregex字符串中使用strftime代码来提取/放置日期时间。在
get_regex_from_dfregex
defget_regex_from_dfregex(self,dfregex:str,is_capture_dfs:bool=False)->str
- 将dfregex转换为其对应的常规regex。在
- 默认情况下,不捕获日期时间格式组。在
- 在dfregex字符串中使用strftime代码来匹配日期时间。在
extract_datetimes
defextract_datetimes(self,dfregex:str,text:str,count:int=0)->Iterable[datetime]
- 从给定dfregex字符串的文本中提取最左边的日期时间。在
- 返回日期时间对象的Iterable。在
- 使用非零计数限制提取的数量。在
- 在dfregex字符串中使用strftime代码来匹配日期时间。在
extract_datetime
defextract_datetime(self,dfregex:str,text:str)->Optional[datetime]
- 从给定dfregex字符串的文本中提取最左边的日期时间。在
- 如果找到匹配的datetime对象,则返回,否则返回None。在
- 在dfregex字符串中使用strftime代码来匹配日期时间。在
dfregex语法
dfregex的语法与传统python regex的语法几乎相同。 只有一个添加和一个修改来支持日期时间格式代码。在
日期时间格式代码
百分比字符表示日期时间格式代码的开头。这些代码
是datetime
的内置datetime
模块中使用的标准C样式的。在
有关代码的完整列表,请参见the Python docs。在
NOTE: The following codes are currently not supported: %Z, %c, %x, %X
文字百分比(%)
常规正则表达式(%
)中的百分比文本必须在dfregex(\%
)中转义
因为未转义的标记日期时间格式代码的开始,否则
模棱两可的。在
- 项目
标签: