我有一个文本文件,需要对包含日期的行(例如00Z 26 Feb)进行微调,以便从如下字符串中提取日期:
<H2>04018 BIKF Keflavikurflugvollur Observations at 00Z 26 Feb 1983</H2>
<H2>04018 BIKF Keflavikurflugvollur Observations at 12Z 26 Feb 1983</H2>
<H2>04018 BIKF Keflavikurflugvollur Observations at 00Z 28 Feb 1983</H2>
<H2>04018 BIKF Keflavikurflugvollur Observations at 12Z 28 Feb 1983</H2>
等等。你知道吗
所以我想找到包含日期的行,然后提取00z1983年2月26日,并将其转换为00-26-02-1983。在Python中如何做到这一点? 谢谢
同时使用
regex
和datetime
另一个选项是直接使用
re.sub
,如下所示输出为
希望这个代码能帮助你。你知道吗
可能有一条更简单的路线,但这是可行的(从您的一条线路):
提供:
解释:
text.replace("Z","")
删除文本中的“Z”(用空字符串“”替换“Z”)。.replace("</H2>","")
进一步删除“”。.split(" ")
将字符串更改为字符串列表。第三行返回:在这里,我们只需要将“Feb”(索引
-2
更改为一个用strptime(text[-2],"%b").tm_mon
完成的数字,并用str()
将其转换回一个字符串。第四行返回:最后,感兴趣的字符串(从索引
-4
到结尾)可以根据您的请求用“-”连接起来,就像在最后一行"-".join(text[-4:])
中所做的那样。你知道吗另外,您已经尝试过的方法也存在一些问题
datetime_object = datetime.strptime('00Z 28 Feb 1983', '%h %d %M %Y')
。首先,strtime不知道它应该对“Z”做什么:在把它交给函数之前必须丢弃它。然后,您没有将正确的参数传递给函数。根据the tutorial,以下是您告诉strtime的内容:%h
:与%b
=缩写月名相同%d
:每月的第几天(01到31)%M
:分钟%Y
:包括世纪在内的年份但这些并不是你实际赋予函数的内容:“00 28 Feb 1983”实际上是:
%H
:小时,使用24小时制(00到23)%d
:月日(01到31)(这个是正确的)%b
:缩写月份名称%Y
:年份包括世纪(这个是正确的)解决这个问题,你会得到:
您可以从中获得:
相关问题 更多 >
编程相关推荐