下面是将中文日期转换为数字日期的完整攻略:
前置知识
在实现中文日期转换为数字日期之前,你需要了解以下知识点:
- Python基础语法:字符串、列表、字典、时间模块等。
- 中文日期和数字日期的对应关系,比如“2018年7月16日”和“2018-07-16”。
代码实现
以下是将中文日期转换为数字日期的Python代码,包含了将中文数字转换为阿拉伯数字的函数:
import re
# 中文数字转阿拉伯数字
def cn2dig(src):
if src == "":
return None
else:
rmb_map = {"〇":0,"一":1,"二":2,"三":3,"四":4,"五":5,"六":6,"七":7,"八":8,"九":9}
unit_map = {"十":10,"百":100,"千":1000}
rmb = 0
section = 0
for i in range(len(src)):
if src[i] in unit_map:
section = rmb
rmb = 0
elif src[i] in rmb_map:
if section != 0:
section *= unit_map[src[i]]
rmb += section
section = 0
else:
rmb *= 10
rmb += rmb_map[src[i]]
return rmb + section
# 中文日期转数字日期
def cn_date2num_date(cn_date):
cn_num_dict = {"一": "01", "二": "02", "三": "03", "四": "04", "五": "05",
"六": "06", "七": "07", "八": "08", "九": "09", "十": "10",
"十一": "11", "十二": "12"}
num_date = re.sub(u"([0-9]+)年([0-9]+)月([0-9]+)日", "\\1-\\2-\\3", cn_date)
num_date = re.sub(u"([0-9]+)月([0-9]+)日", "\\1-\\2", num_date)
num_date = re.sub(u"([0-9]+)[点时]([0-9]+)[分]?[钟]?", "\\1:\\2", num_date)
num_date = re.sub(u"([0-9]+)[分]?[钟]?", "\\1:00", num_date)
num_date = re.sub(u"([0-9]+)年", "\\1-", num_date)
for cn_num in cn_num_dict.keys():
num_date = re.sub(cn_num, cn_num_dict[cn_num], num_date)
cn_year = re.findall(u"([0-9]+)年", cn_date)
if cn_year:
num_year = cn2dig(cn_year[0])
num_date = re.sub(u"[0-9]+年", str(num_year) + "-", num_date)
return num_date
示例说明
假设你要将“2021年3月十五日”转换为数字日期,在Python的交互式命令行中输入如下代码:
cn_date = "2021年3月十五日"
num_date = cn_date2num_date(cn_date)
print(num_date)
输出结果为:
2021-03-15
再假设你要将“二零二一年三月二十一日十点三十分”转换为数字日期,在Python的交互式命令行中输入如下代码:
cn_date = "二零二一年三月二十一日十点三十分"
num_date = cn_date2num_date(cn_date)
print(num_date)
输出结果为:
2021-03-21 10:30
通过这两个示例可以看出,代码能够很好地将中文日期转换为数字日期,并且具有一定的容错能力。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现将中文日期转换为数字日期 - Python技术站