Python实现中文数字与阿拉伯数字映射生成器(支持0-9999)的完整代码

 更新时间:2025年07月31日 09:44:22   作者:袁袁袁袁满  
在中文文本处理和自然语言处理(NLP)应用中,经常需要将中文数字转换为阿拉伯数字,本文将介绍如何使用Python根据用户从控制台输入的数字范围,生成相应的中文数字到阿拉伯数字的映射字典,并将结果保存为JSON文件,需要的朋友可以参考下

1. 引言

在中文文本处理和自然语言处理(NLP)应用中,经常需要将中文数字转换为阿拉伯数字。本文将介绍如何使用Python根据用户从控制台输入的数字范围,生成相应的中文数字到阿拉伯数字的映射字典,并将结果保存为JSON文件。

2. 需求分析‌

开发一个Python程序,根据用户输入的数字(最大9999),自动生成中文数字与阿拉伯数字的映射字典,并保存为JSON文件。例如:输入10时,生成{“零”:0, “一”:1,…, “十”:10}。

3. 核心实现思路‌

1. 中文数字转换规则‌

  • 单位系统‌:万(超过9999的部分)、千、百、十、个位。
  • 零处理‌:连续零仅保留一个(如205→“二百零五”),末尾零省略(如100→“一百”)。
  • 特殊读法‌:10读作“十”而非“一十”。

2. 用户输入验证‌

  • 确保输入为整数、且在0~9999之间。

3. JSON文件生成‌

  • 使用Python标准库json保存字典,保留Unicode字符。

4. 完整代码实现‌

import json


def number_to_chinese(num):
    """将0-9999的整数转换为中文数字"""
    units = ['', '十', '百', '千']
    digits = {0: '零', 1: '一', 2: '二', 3: '三', 4: '四',
              5: '五', 6: '六', 7: '七', 8: '八', 9: '九'}

    if num == 0:
        return digits[0]

    num_str = str(num)
    length = len(num_str)
    result = []
    has_zero = False  # 标记前一位是否是零

    for i, n in enumerate(num_str):
        n = int(n)
        pos = length - i - 1  # 当前位数(0=个位,1=十位...)

        if n == 0:
            if not has_zero and pos != 0:
                result.append(digits[0])
                has_zero = True
        else:
            if has_zero:
                result.pop()  # 删除前导零
                has_zero = False
            result.append(digits[n])
            if pos > 0:
                result.append(units[pos])

    # 处理10-19的特殊情况(如10→十,11→十一)
    if 10 <= num <= 19 and length == 2:
        result = result[1:] if num == 10 else ['十' + digits[int(num_str[1])]]

    return ''.join(result).replace('零千', '零').rstrip('零')


def validate_input(prompt):
    """验证用户输入是否为0-9999的整数"""
    while True:
        user_input = input(prompt)
        try:
            num = int(user_input)
            if 0 <= num <= 9999:
                return num
            print("错误:请输入0到9999之间的整数!")
        except ValueError:
            print("错误:输入必须为整数!")


def generate_mapping(max_num):
    """生成中文数字映射字典"""
    return {number_to_chinese(i): i for i in range(max_num + 1)}


def main():
    max_num = validate_input("请输入最大阿拉伯数字(0-9999): ")
    mapping = generate_mapping(max_num)

    # 保存为JSON文件
    filename = f"chinese_numbers_{max_num}.json"
    with open(filename, 'w', encoding='utf-8') as f:
        json.dump(mapping, f, ensure_ascii=False, indent=2)

    print(f"生成成功!映射文件已保存为 {filename}")

    # 读取JSON文件
    with open(filename, 'r', encoding='utf-8') as f:
        loaded_dict = json.load(f)
        print("成功读取字典:", loaded_dict)


if __name__ == "__main__":
    main()

关键代码解析‌

1. 数字转换函数‌

  • 动态单位拼接‌:根据数字位置添加“千、百、十”等单位。
  • 零处理优化‌:通过has_zero标志避免重复零,如2001→“二千零一”。
  • 边界特判‌:单独处理10-19的读法,确保符合中文习惯。

2. 输入验证‌

  • 使用循环强制用户输入合法数值,防止程序崩溃。

3. 文件输出‌

  • ensure_ascii=False确保JSON文件直接显示中文而非Unicode转义。

运行示例‌

1. 输入验证‌

请输入最大阿拉伯数字(0-9999): abc
错误:输入必须为整数!
请输入最大阿拉伯数字(0-9999): 10000
错误:请输入0到9999之间的整数!

2. 生成结果‌,输入10时,输出文件内容:

{
  "零": 0,
  "一": 1,
  "二": 2,
  "三": 3,
  "四": 4,
  "五": 5,
  "六": 6,
  "七": 7,
  "八": 8,
  "九": 9,
  "十": 10
}

输入9999运行结果:

到此这篇关于Python实现中文数字与阿拉伯数字映射生成器(支持0-9999)的完整代码的文章就介绍到这了,更多相关Python中文数字转阿拉伯数字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python图像处理必备技巧分享

    Python图像处理必备技巧分享

    本文系统梳理了Python图像处理的15项核心技能,涵盖图像读取、颜色转换、滤波、边缘检测、形态学操作、特征提取、分割、变换等关键技术,强调这些基础技能的组合应用可实现复杂图像处理任务,需要的朋友可以参考下
    2025-05-05
  • Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例

    Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例

    这篇文章主要介绍了Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据,结合实例形式分析了Python基于逻辑回归模型的数值运算相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • Collatz 序列、逗号代码、字符图网格实例

    Collatz 序列、逗号代码、字符图网格实例

    下面小编就为大家带来一篇Collatz 序列、逗号代码、字符图网格实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • python机器学习实战之树回归详解

    python机器学习实战之树回归详解

    这篇文章主要为大家详细介绍了python机器学习实战之树回归的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • 详解python datetime模块

    详解python datetime模块

    这篇文章主要介绍了python datetime模块的相关资料,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-08-08
  • Win10环境python3.7安装dlib模块趟过的坑

    Win10环境python3.7安装dlib模块趟过的坑

    这篇文章主要介绍了Win10环境python3.7安装dlib模块趟过的坑,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Python requests请求超时的解决方案

    Python requests请求超时的解决方案

    在进行网络数据爬取过程中,网络请求超时是一个令人头疼的问题,尤其在Python中,我们常常需要应对各种网络爬虫、API调用或其他网络操作,而网络请求超时的原因千奇百怪,在本篇文章中,我们将深入探讨Python requests请求超时的解决方案,需要的朋友可以参考下
    2024-12-12
  • tensorflow输出权重值和偏差的方法

    tensorflow输出权重值和偏差的方法

    本篇文章主要介绍了tensorflow输出权重值和偏差的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • 利用python爬取软考试题之ip自动

    利用python爬取软考试题之ip自动

    最近为了考试打算抓取网上的软考试题,在抓取中遇到一些问题,下面这篇文章主要介绍的是利用python爬取软考试题之ip自动的相关资料,文中介绍的非常详细,需要的朋友们下面来一起看看吧。
    2017-03-03
  • 使用Pytorch构建第一个神经网络模型 附案例实战

    使用Pytorch构建第一个神经网络模型 附案例实战

    这篇文章主要介绍了用Pytorch构建第一个神经网络模型(附案例实战),本文通过实例代码给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论