python - 如何解析没有零填充的日期,格式为(1 位或 2 位数字年份)-(月份缩写)?
问题描述
我需要解析一些大致格式为(1 或 2 位年份)-(月份缩写)的日期,例如:
5-6月(2005年6月)
13-1月(2013年1月)
我尝试将 strptime 与格式一起使用,%b-%y
但它并没有始终如一地产生所需的日期。根据文档,这是因为我的数据集中的某些年份不是零填充的。
此外,当我在字符串“5-Jun”上测试日期时间模块(请参阅下面的代码)时,我得到了“2019-06-05”,而不是所需的结果(2005 年 6 月),即使我设置yearfirst=True
了 when打电话parse
。
from dateutil.parser import parse
parsed = parse("5-Jun",yearfirst=True)
print(parsed)
解决方案
如果将 0 填充到个位数年份会更容易,因为它可以使用格式直接转换为时间。此处使用正则表达式将单个数字的任何实例替换为“在前面填充的 0”值。我从这里使用了正则表达式。
示例代码:
import re
match_condn = r'\b([0-9])\b'
replace_str = r'0\1'
datetime.strptime(re.sub(match_condn, replace_str, '15-Jun'), '%y-%b').strftime("%B %Y")
输出:
June 2015
推荐阅读
- r - 使用条件和子类别过滤(分层)数据
- elasticsearch - 在 ruby fiter 下使用 Time.parse 时,Logstash 解析失败
- java - Kubernetes 外部连接到 Mongodb 集群
- javascript - 一个函数中有多个事件处理程序
- elixir - JSON 响应的单元测试,匹配 JSON 响应以断言键和值
- r - 在库函数中分配变量
- angular - Angular 6.x 元标记 OG:描述不适用于 FB
- unit-testing - Rails 升级后的神秘 rspec 错误
- javascript - 如何使用 JS 动态创建 SVG 文本元素
- python - 处理的 python 是固定在一个 CPU 上,还是可以使用多个 CPU 超时?