【问题标题】:python extracting datepython提取日期
【发布时间】:2020-03-25 00:21:30
【问题描述】:

我需要从 jpeg 格式中提取日期, 我已经以字符串的形式从 jpeg 中提取了文本,并使用了正则表达式来提取日期,

JPEG 文本

续:7225811153; BillNo4896TableNoR306 07-Jun-201921:18:40

使用的代码

导入正则表达式和日期时间

import re as r

from datetime import datetime

正则表达式识别上述字符串中的日期

id = r.search(r'\d{2}-\w{3}-\d{4}',text)
print(id)

输出 re.Match 对象; span=(89, 100), match='07-Jun-2019'

但是在执行上述代码后,我尝试了以下方法来提取日期

代码

提取日期

date = datetime.strptime(id.group(),'%d-%B-%Y').date()

输出

ValueError:时间数据 '07-Jun-2019' 与格式 '%d-%B-%Y' 不匹配

我哪里出错了,或者有更好的方法来做同样的事情。 非常感谢您的帮助

【问题讨论】:

  • 试试%d-%b-%Y%B 表示“月份作为语言环境的全名”,而%b 表示“月份作为语言环境的缩写名称”。 See Documentation for more info

标签: python regex image-extraction


【解决方案1】:

使用%b 而不是%B,但请确保您只尝试转换匹配如果它发生:

import re as r
from datetime import datetime
text = 'Cont:7225811153; BillNo4896TableNoR306 07-Jun-201921:18:40'
id = r.search(r'\d{2}-\w{3}-\d{4}',text)
if id:  # <-- Check if a match occurred
    print(datetime.strptime(id.group(),'%d-%b-%Y').date())
# => 2019-06-07

Python demo online

查看datetime.strptime format strings的更多详情。

【讨论】:

    【解决方案2】:

    你几乎完美无缺。只需将 B 替换为 b。

    >>> datetime.strptime(id.group(),'%d-%b-%Y').date()
    datetime.date(2019, 6, 7)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      • 1970-01-01
      • 2021-03-01
      • 2016-02-23
      • 1970-01-01
      相关资源
      最近更新 更多