1

我需要从 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 对象;跨度=(89, 100),匹配='07-Jun-2019'

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

代码

提取日期

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

输出

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

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

4

2 回答 2

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 演示

查看有关datetime.strptime格式字符串的更多详细信息。

于 2019-11-29T11:53:50.297 回答
0

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

>>> datetime.strptime(id.group(),'%d-%b-%Y').date()
datetime.date(2019, 6, 7)
于 2019-11-29T11:59:07.417 回答