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

如何从纯文本(python)中提取特定的日期格式?,python,regex,Python,Regex,我想将所有日期(以特定的日期格式-2020年1月1日)提取到python字典中。例如,我的文本是: “Psg 2020年1月1日hsjkfsdlkfhshdfh 1908年1月2日hdhahhajshjdjoi 2019年12月31日FAFSFAGHERHEA” 然后,我将其提取为: [“2020年1月1日”、“1908年1月2日”、“2019年12月31日”] 我找到了方法str.split()。这没有成功 我该怎么做 谢谢你的帮助 附言 实际上,我想提取该日期,然后转换为以下格式: "Ja

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

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

然后,我将其提取为:

[“2020年1月1日”、“1908年1月2日”、“2019年12月31日”]
我找到了方法
str.split()
。这没有成功

我该怎么做

谢谢你的帮助

附言

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

"January 1, 2020" -> "1. January 2020"
然后在课文中把它翻回来

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

编辑


我已经完成了这个过程。谢谢你的努力

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

例如(用于解释):

印刷品:

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

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

例如(用于解释):

印刷品:

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

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


请参见:

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


查看:

使用类似正则表达式的将帮助您轻松地
”((?:一月|二月|三月|四月|五月|六月|七月|八月|九月|十月|十二月)\s+\d+,\s+\d+”

然后对于日期格式,使用
strtime
strftime

from datetime import datetime

input_format = "%B %d, %Y" # full month name, day and year
output_format = "%d.%B %Y"
for match in matches:
    new_date = datetime.strptime(match, input_format).strftime(output_format)
    print(match, ">>", new_date)

使用类似正则表达式将帮助您轻松地
”((?:一月|二月|三月|四月|五月|六月|七月|八月|九月|十月|十一月|十二月)

然后对于日期格式,使用
strtime
strftime

from datetime import datetime

input_format = "%B %d, %Y" # full month name, day and year
output_format = "%d.%B %Y"
for match in matches:
    new_date = datetime.strptime(match, input_format).strftime(output_format)
    print(match, ">>", new_date)

这已经被问了十几次了。Imo最好的方法是使用库,例如:

产生

2020-01-01 00:00:00
1908-01-02 00:00:00
2019-12-31 00:00:00

这已经被问了十几次了。Imo最好的方法是使用库,例如:

产生

2020-01-01 00:00:00
1908-01-02 00:00:00
2019-12-31 00:00:00

纯正则表达式解决方案是使用以下正则表达式从给定句子中提取特定的日期格式字符串:

\w+\s+\d{1,2}\s+\d{4}

可以找到Regex解释和演示

然后在函数中使用这个正则表达式来匹配模式的所有引用并返回这些引用

import re
str = "Psg January 1, 2020 hsjkfsdlkfhshdfh January 2, 1908 hdhahhajshjdjoi December 31, 2019 fafsfafagherhea"
x = re.findall("\w+\s+\d{1,2},\s+\d{4}", str)
print(x)

纯正则表达式解决方案是使用以下正则表达式从给定句子中提取特定的日期格式字符串:

\w+\s+\d{1,2}\s+\d{4}

可以找到Regex解释和演示

然后在函数中使用这个正则表达式来匹配模式的所有引用并返回这些引用

import re
str = "Psg January 1, 2020 hsjkfsdlkfhshdfh January 2, 1908 hdhahhajshjdjoi December 31, 2019 fafsfafagherhea"
x = re.findall("\w+\s+\d{1,2},\s+\d{4}", str)
print(x)

您应该使用@User123的regexposible副本执行此操作,请查看。您应该使用@User123的regexposible副本执行此操作,请查看。这是您要查看的输出吗?谢谢,但我以不同的方式制作。这是您要找的输出吗?谢谢,但我用不同的方式做到了。
Output :

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