- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 Python 处理 PDF,我正在使用 PDFMiner
访问文件的元数据。我使用这个提取信息:
from pdfminer.pdfparser import PDFParser, PDFDocument
fp = open('diveintopython.pdf', 'rb')
parser = PDFParser(fp)
doc = PDFDocument()
parser.set_document(doc)
doc.set_parser(parser)
doc.initialize()
print doc.info[0]['CreationDate']
# And return this value "D:20130501200439+01'00'"
如何将 D:20130501200439+01'00'
转换为 Python 中可读的格式?
最佳答案
我发现记录的格式 here .我也需要处理时区问题,因为我有来自各地的 16 万份文件需要处理。这是我的完整解决方案:
import datetime
import re
from dateutil.tz import tzutc, tzoffset
pdf_date_pattern = re.compile(''.join([
r"(D:)?",
r"(?P<year>\d\d\d\d)",
r"(?P<month>\d\d)",
r"(?P<day>\d\d)",
r"(?P<hour>\d\d)",
r"(?P<minute>\d\d)",
r"(?P<second>\d\d)",
r"(?P<tz_offset>[+-zZ])?",
r"(?P<tz_hour>\d\d)?",
r"'?(?P<tz_minute>\d\d)?'?"]))
def transform_date(date_str):
"""
Convert a pdf date such as "D:20120321183444+07'00'" into a usable datetime
http://www.verypdf.com/pdfinfoeditor/pdf-date-format.htm
(D:YYYYMMDDHHmmSSOHH'mm')
:param date_str: pdf date string
:return: datetime object
"""
global pdf_date_pattern
match = re.match(pdf_date_pattern, date_str)
if match:
date_info = match.groupdict()
for k, v in date_info.iteritems(): # transform values
if v is None:
pass
elif k == 'tz_offset':
date_info[k] = v.lower() # so we can treat Z as z
else:
date_info[k] = int(v)
if date_info['tz_offset'] in ('z', None): # UTC
date_info['tzinfo'] = tzutc()
else:
multiplier = 1 if date_info['tz_offset'] == '+' else -1
date_info['tzinfo'] = tzoffset(None, multiplier*(3600 * date_info['tz_hour'] + 60 * date_info['tz_minute']))
for k in ('tz_offset', 'tz_hour', 'tz_minute'): # no longer needed
del date_info[k]
return datetime.datetime(**date_info)
关于python - 将 PDF 的 CreationTime 转换为 Python 中的可读格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16503075/
我正在使用 DirectoryInfo.CreationTime 来获取目录的创建日期但是它返回奇怪的日期 {21/11/1617 0:00:00} var directoryInfo = new D
不完全确定我是如何表达这个问题的,但我的问题是我正在执行一个 api 调用,该调用返回一堆具有创建时间的消息,现在我想做的只是返回具有相同消息的最新创建时间日期所以说如果我在 2018 年 3 月 1
当我在 Azure 自动化中运行此代码时,CreationTime 的类型为 String。但是,当我在 Powershell ISE 中运行它时,类型为 DateTimeOffset。这是为什么?:
我有一个脚本,它获取文件的创建日期并将其注入(inject)到 xml 标记中。一切正常,但日期格式显示为 2019-4-3,我需要格式为 2019-04-03。 我已经尝试过'tostring(MM
我在 AppEngine 上使用 Objectify 持久化实体。 在几个实体中,我想存储 creationTime 和 lastUpdateTime。 我的意图是在第一次创建实体时将 creatio
我有这个使用 Java 8 获取特定文件的创建日期时间的代码片段: Path path = Paths.get("D:\\SampleFile.txt"); BasicFileAttr
在Ehcache Api for Element , javadocs 没有提供关于如何表示不同时间的信息。它们很长。 假设这是毫秒瞬间是否安全?我多次使用 JodaTime 库,所以如果我以这种方式
我正在使用以下代码来突出显示浏览器实例(仅存在 1 个浏览器实例) Browser("CreationTime:=-1").highlight 有时代码会突出显示唯一可用的浏览器实例,而有时会显示“找
以下引自 javadoc . FileTime creationTime() Returns the creation time. The creation time is the time that
我今天正在调试一些代码,注意到我的一个 FileInfo 对象的 LastWriteTime 早于它的 CreationTime 时间。这是可能的/预期的吗? 最佳答案 文件的这些属性可以修改为取任何
我正在使用 Python 处理 PDF,我正在使用 PDFMiner 访问文件的元数据。我使用这个提取信息: from pdfminer.pdfparser import PDFParser, PDF
我是一名优秀的程序员,十分优秀!