Python的知识点运用-1(日期转换)


问:如何将 '星期一, 三月 13, 2023'转换成2023-03-13


看到这个问题,你的第一反应是什么???

反正我是懵逼的。不过后面一想,时间模块可以。

在这个问题后面,群友又问了一个问题,如何在本地电脑让代码到点执行?

你怎么想???

time模块可以解决,其实也不仅仅只有time模块可以解决。脑洞打开!!!

到此结束!回回归正题!


一周多没更新,本章更新一个算常用模块的知识点。该知识点是某位群友提出来的!!!本意是问有没有简单的方式得出结果,且不能太慢。


我的第一反应是用 切片 以及 字典 + datetime模块。一起来看看

from datetime import datetime

date_str = '三月 13, 2023'

# 将中文月份映射到数字月份
month_dict = {'一月': '1', '二月': '2', '三月': '3', '四月': '4', '五月': '5', '六月': '6', '七月': '7', '八月': '8', '九月': '9', '十月': '10', '十一月': '11', '十二月': '12'}
for month in month_dict:
    date_str = date_str.replace(month, month_dict[month])

date = datetime.strptime(date_str, '%m %d, %Y')
format_date = date.strftime('%Y-%m-%d')

print(format_date)
# 2023-03-13

注意:切片就不用说了吧,我这里直接拿着切片后的结果跑的。

这样就能得到结果,不过感觉有些麻烦,怎么办?

扫描二维码关注公众号,回复: 14707423 查看本文章

寻求网路资源,最后得到一个简单的

不过需要下载第三方模块!

import dateparser

date_str = '三月 13, 2023'
date = dateparser.parse(date_str, languages=['zh'])
format_date = date.strftime('%Y-%m-%d')

print(format_date)

这样也是可以的。不过有点慢


不过最后,提出问题的当事人,最后给出的结果,是跟第一种方式类似,不过采用了正则。

import re

month_table = {'一': '1', '二': '2', '三': '3',
               '四': '4', '五': '5', '六': '6',
               '七': '7', '八': '8', '九': '9',
               '十': '10', '十一': '11', '十二': '12'}

text = '星期一, 三月 13, 2023'

month, day, year = re.findall("([^\s]{,2})月 (\d{,2}), (\d{2,4})", text)[0]
month = month_table[month]
f"{year}-{month}-{day}"

看到上面的解决方式,你的想法是什么的。直呼大神?还是感觉麻烦?还是没必要这么写?

猜你喜欢

转载自blog.csdn.net/weixin_52040868/article/details/129659634
今日推荐