如何从纯文本(python)中提取特定的日期格式?

问题描述 投票:0回答:3

我想将所有日期(以特定的日期格式-2020年1月1日)提取到python字典中。我的文字例如:

“ Psg 2020年1月1日hsjkfsdlkfhshdfh 1908年1月2日hdhahhajshjdjoi 2019年12月31日fafsfafagherhea”

然后我将其提取到:

["January 1, 2020", "January 2, 1908", "December 31, 2019"]

我找到了方法str.split()。没有成功。

我该怎么做?

谢谢您的帮助!

P.S。

实际上我想提取日期,然后以以下格式转换:

"January 1, 2020" -> "1. January 2020"

然后将其重新显示为文本。

简而言之:我想用其他日期格式替换文本中的某些日期格式。

python regex
3个回答
2
投票

对于此任务,最好使用正则表达式(Python中的re模块)。

例如(以re为例):

Regex101

打印:

txt = '''Psg January 1, 2020 hsjkfsdlkfhshdfh January 2, 1908 hdhahhajshjdjoi December 31, 2019 fafsfafagherhea'''
import re

r = re.compile(r'(January|February|March|April|May|June|July|August|September|October|November|December)\s*(\d+),\s*(\d+)')

new_txt = r.sub(r'\2. \1 \3', txt)
print(new_txt)

1
投票

您可以使用功能find()研究任何月份的索引,并且可以计算要提取的字符

Seen:Psg 1. January 2020 hsjkfsdlkfhshdfh 2. January 1908 hdhahhajshjdjoi 31. December 2019 fafsfafagherhea


1
投票

使用类似正则表达式将轻松帮助您https://www.journaldev.com/23666/python-string-find

'((?:January|February|March|April|May|June|July|August|September|October|November|December)\s+\d+,\s+\d+)'

然后使用日期格式,使用message = "Psg January 1, 2020 hsjkfsdlkfhshdfh January 2, 1908 hdhahhajshjdjoi December 31, 2019 fafsfafagherhea" matches = re.findall( r'((?:January|February|March|April|May|June|July|August|September|October|November|December)\s+\d+,\s+\d+)', message) for match in matches: print(match) strptime

strftime
© www.soinside.com 2019 - 2024. All rights reserved.