python实现将中文日期转换为数字日期

下面是将中文日期转换为数字日期的完整攻略:

前置知识

在实现中文日期转换为数字日期之前,你需要了解以下知识点:

  1. Python基础语法:字符串、列表、字典、时间模块等。
  2. 中文日期和数字日期的对应关系,比如“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技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • Python代码实现列表分组计数

    在Python中,列表分组计数是一种常见的操作。本文将详细讲解如何使用Python实现列表分组计数。 方法一:使用collections模块的Counter类 Python中的collections模块提供了一个Counter类可以用于计数。可以使用Counter类来实现列表分组计数。下面是一个示例: # 示例1:使用collections模块Counter…

    python 2023年5月13日
    00
  • 详解Python文件修改的两种方式

    下面是详解Python文件修改的两种方式的完整攻略。 方式一:使用Python内置的文件操作函数 Python 提供了内置函数 open() 和 close() 用于打开和关闭文件,以及提供了一些文件操作的方法。通过这些函数,我们可以直接打开一个文件,读取或修改其中的内容,最后保存并关闭文件。 打开文件 使用内置函数 open() 可以打开一个文件,函数语法…

    python 2023年6月5日
    00
  • Python的位置参数是什么?

    在 Python 中,位置参数是一种函数参数的类型,它们根据它们在函数定义中的位置来接收传递给函数的值。 位置参数是最常用的参数类型。当我们定义一个函数时,我们可以指定多个参数,其中一些是位置参数。位置参数的值是按照它们在函数调用中出现的顺序来传递的。例如,下面是一个带有两个位置参数的函数: def add_numbers(a, b): return a +…

    2023年2月20日
    00
  • 利用Python编写的实用运维脚本分享

    下面我来详细讲解“利用Python编写的实用运维脚本分享”的完整攻略。 1.确定需求和目标 在编写实用运维脚本之前,首先需要确定自己的需求和目标,明确脚本要达到的功能和效果。根据自己的需求和目标,可以确定脚本的输入输出、处理逻辑和要依赖的Python第三方库等。 2.编写代码逻辑和实现算法 在确定了需求和目标之后,就可以开始编写代码逻辑和实现算法,这是编写运…

    python 2023年5月19日
    00
  • python3使用mutagen进行音频元数据处理的方法

    下面是“Python3使用Mutagen进行音频元数据处理的方法”的完整攻略。 简介 Mutagen是一个Python3库,它提供了操作多种音频格式元数据的API。它支持许多常见格式,包括MP3、FLAC、OGG、MP4和WAV。在本文中,我们将向大家演示如何使用Mutagen库更新音频元数据。 安装Mutagen 在正式开始之前,我们需要先安装Mutage…

    python 2023年6月2日
    00
  • python系统指定文件的查找只输出目录下所有文件及文件夹

    要实现python系统指定文件的查找只输出目录下所有文件及文件夹,可以按照以下步骤进行。 步骤一:导入os模块 os模块是Python内置的一个用于与操作系统交互的模块。通过导入os模块,我们可以使用该模块中提供的函数来实现对文件的操作。 import os 步骤二:调用os.listdir函数获取目录内容 os.listdir函数可以获取指定目录下的所有文…

    python 2023年6月3日
    00
  • 基于Python实现迪杰斯特拉和弗洛伊德算法

    基于Python实现迪杰斯特拉和弗洛伊德算法的完整攻略 迪杰斯特拉和弗洛伊德算法是两种常用的图论算法,用于求解最短路径问题。在Python中,可以使用networkx和numpy库实现迪杰斯特拉和弗洛伊德算法。本文将详细讲解Python实现迪杰斯特拉和弗洛伊德算法的整个攻略,包括算法原理、Python实现过程和示例。 算法原理 迪杰斯特拉算法 迪杰斯特拉算法…

    python 2023年5月14日
    00
  • 65条最常用正则表达式 你要的都在这里了

    正则表达式是一种用于匹配字符串的模式,它可以用来检查字符串是否符合某种模式,或者从字符串中提取出符合某种模式的子串。下面是 65 条最常用的正则表达式,包括匹配数字、字母、空格、特殊字符等。 1. 匹配数字 匹配一个数字:\d 匹配一个或多个数字:\d+ 匹配零个或多个数字:\d* 匹配零个或一个数字:\d? 匹配一个非数字字符:\D 以下是一个使用正则表达…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部