问:如何将 '星期一, 三月 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
注意:切片就不用说了吧,我这里直接拿着切片后的结果跑的。
这样就能得到结果,不过感觉有些麻烦,怎么办?
寻求网路资源,最后得到一个简单的
不过需要下载第三方模块!
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}"
看到上面的解决方式,你的想法是什么的。直呼大神?还是感觉麻烦?还是没必要这么写?