在 Python 中从复杂字符串中检索日期
我正在尝试使用 datetime.strptime 从两个字符串中获取单个日期时间。
时间很简单(例如晚上 8:53),所以我可以这样做:
theTime = datetime.strptime(givenTime, "%I:%M%p")
但是,该字符串不仅仅是一个日期,它是一个格式类似于 http://site.com/ 的链接?年=2011&月=10&日=5&小时=11
。我知道我可以做类似的事情:
theDate = datetime.strptime(givenURL, "http://site.com/?year=%Y&month=%m&day=%d&hour=%H")
但我不想从链接中获取该时间,因为它是在其他地方检索的。有没有办法放置一个虚拟符号(例如%x或其他东西)作为最后一个变量的灵活空间?
最后,我设想有一行类似于:(
theDateTime = datetime.strptime(givenURL + givenTime, ""http://site.com/?year=%Y&month=%m&day=%d&hour=%x%I:%M%p")
尽管显然不会使用 %x)。有什么想法吗?
I'm trying to get a single datetime out of two strings using datetime.strptime.
The time is pretty easy (ex. 8:53PM), so I can do something like:
theTime = datetime.strptime(givenTime, "%I:%M%p")
However, the string has more than just a date, it's a link in a format similar to http://site.com/?year=2011&month=10&day=5&hour=11
. I know that I could do something like:
theDate = datetime.strptime(givenURL, "http://site.com/?year=%Y&month=%m&day=%d&hour=%H")
but I don't want to get that hour from the link since it's being retrieved elsewhere. Is there a way to put a dummy symbol (like %x or something) to serve as a flexible space for that last variable?
In the end, I envision having a single line similar to:
theDateTime = datetime.strptime(givenURL + givenTime, ""http://site.com/?year=%Y&month=%m&day=%d&hour=%x%I:%M%p")
(although, obviously, the %x wouldn't be used). Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
认为如果您想简单地从 URL 中跳过时间,您可以使用 split 例如以下方式:
所以不确定是否正确理解您,但是:
Think that if you would like to simple skip time from the URL you can use split for example the following way:
So not sure that understood you correctly, but:
result
编辑 1
由于 strptime() 很慢,我改进了代码以消除它
result
我的代码快了 4.5 倍。如果有很多这样的转换需要执行,那可能会很有趣
result
Edit 1
As strptime() is slow, I improved my code to eliminate it
result
My code is 4.5 times faster. That may be interesting if there are a lot of such transformations to perform
没有办法用格式字符串来做到这一点。但是,如果小时并不重要,您可以从第一个示例中的 URL 获取它,然后调用
theDateTime.replace(hour=hour_from_a_ Different_source)
。这样您就不必进行任何额外的解析。
There's no way to do that with the format string. However, if the hour doesn't matter, you can get it from the URL as in your first example and then call
theDateTime.replace(hour=hour_from_a_different_source)
.That way you don't have to do any additional parsing.