我想将所有日期(以特定的日期格式-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中的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)
您可以使用功能find()研究任何月份的索引,并且可以计算要提取的字符
Seen:Psg 1. January 2020 hsjkfsdlkfhshdfh 2. January 1908 hdhahhajshjdjoi 31. December 2019 fafsfafagherhea
使用类似正则表达式将轻松帮助您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