将汉语句子中的阿拉伯数字替换为中文

num_str_start_symbol = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9','10']
#more_num_str_symbol = ['零', '一', '二', '两', '三', '四', '五', '六', '七', '八', '九', '十', '百', '千', '万', '亿']
import re
def to_Chiness_num(num):
    num_dict = {'1':'一', '2':'二', '3':'三', '4':'四', '5':'五', '6':'六', '7':'七', '8':'八', '9':'九', '0':'零', }
    index_dict = {1:'', 2:'十', 3:'百', 4:'千', 5:'万', 6:'十', 7:'百', 8:'千', 9:'亿'}
    

    nums = list(num)
    nums_index = [x for x in range(1, len(nums)+1)][-1::-1]

    str = ''
    for index, item in enumerate(nums):
        str = "".join((str, num_dict[item], index_dict[nums_index[index]]))

    str = re.sub("零[十百千零]*", "零", str)
    str = re.sub("零万", "万", str)
    str = re.sub("亿万", "亿零", str)
    str = re.sub("零零", "零", str)
    str = re.sub("零\\b" , "", str)
    print(str)
    return str  
def changeArabNumToChinese(oriStr):
    lenStr = len(oriStr);
    aProStr = ''
    if lenStr == 0:
        return aProStr;
 
    hasNumStart = False;  #默认 不含阿拉伯数字
    numberStr = ''        #默认 不含阿拉伯数字
    
    for idx in range(lenStr): #遍历所有 字符
        if oriStr[idx] in num_str_start_symbol: #当前字符 是 阿拉伯数字
            if not hasNumStart:
                hasNumStart = True;
 
            numberStr += oriStr[idx] #将个位阿拉伯数字 累加到输出字符串
            print(numberStr)
    
    
        else:   #当前字符 不是 阿拉伯数字
            
            if hasNumStart:   #当前字符不是数字,但是【之前的字符 包含数字】,先把之前的数字进行转换,并累加
               
                    numResult = str(to_Chiness_num(numberStr)) # 将之前的阿拉伯数字 转换为 汉字数字
                
                    aProStr += numResult  #将汉字数字,累加到 输出字符串
                    
                    numberStr = ''  # 数字清空,为了记录下一次的 阿拉伯数字
                    hasNumStart = False; # 设置为false  恢复到初始值
                   
 
            aProStr += oriStr[idx]  #将不是阿拉伯的 当前汉字字符 累加到 输出字符串
            pass
 
    if len(numberStr) > 0: # 处理以数字 结尾的情况 ,不能去掉。  '12套餐12'
        resultNum = to_Chiness_num(numberStr) # 将汉字数字 转换为 阿拉伯数字
        
        
        aProStr += str(resultNum)
 
    return aProStr
 
 

testStr1 = ['231', '我有213块钱', '12套餐12', '213今天天气真不错',
           '80% discount rate很高了', '千万不要',
            '我要去西藏17天',
            ]
 

    
for tstr in testStr1:
    print(tstr + ' = ' + changeChineseNumToArab(tstr))

 

 

将汉字替换为阿拉伯

https://blog.csdn.net/zhengdan66/article/details/78148695

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C#,可以使用以下方法将中文汉语数字阿拉伯数字相互转化。 1. 将阿拉伯数字转换为中文汉语数字: 可以使用一个方法,将阿拉伯数字的每一位转换为对应的中文数字。例如,可以创建一个方法`OneBitNumberToChinese`,将数字1-9转换为中文数字。然后,可以根据阿拉伯数字的位数,逐位转换为中文数字,并拼接起来。\[1\] 2. 将中文汉语数字转换为阿拉伯数字: 可以使用一个方法,将中文汉语数字的每一位转换为对应的阿拉伯数字。可以创建一个方法`FFXieshu`,接受中文汉语数字作为参数,并返回对应的阿拉伯数字。该方法可以处理整数、小数、正数、负数等情况。\[2\]\[3\] 需要注意的是,转换中文汉语数字阿拉伯数字时,要考虑到数字的位数、小数点、计数单位等情况,以确保转换结果的准确性。 以下是一个示例代码,演示了如何在C#实现中文汉语数字阿拉伯数字的相互转化: ```csharp public class ChineseNumberConverter { private static string\[\] chineseDigits = { "〇", "一", "二", "三", "四", "五", "六", "七", "八", "九" }; private static string\[\] arabicDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }; public static string ArabicToChinese(int number) { string chineseNumber = ""; string numberString = number.ToString(); foreach (char digit in numberString) { int digitValue = int.Parse(digit.ToString()); chineseNumber += chineseDigits\[digitValue\]; } return chineseNumber; } public static int ChineseToArabic(string chineseNumber) { string numberString = ""; foreach (char digit in chineseNumber) { int digitIndex = Array.IndexOf(chineseDigits, digit.ToString()); numberString += arabicDigits\[digitIndex\]; } return int.Parse(numberString); } } // 示例用法 int arabicNumber = 12345; string chineseNumber = ChineseNumberConverter.ArabicToChinese(arabicNumber); Console.WriteLine(chineseNumber); // 输出:一二三四五 string chineseNumber = "一二三四五"; int arabicNumber = ChineseNumberConverter.ChineseToArabic(chineseNumber); Console.WriteLine(arabicNumber); // 输出:12345 ``` 请注意,以上示例代码仅演示了基本的转换方法,实际应用可能需要根据具体需求进行适当的修改和扩展。 #### 引用[.reference_title] - *1* [C# 实现阿拉伯数字转换为中文数字3种实现思路(递归拼接、循环拼接、if拼接)](https://blog.csdn.net/qq_38974638/article/details/108476401)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [汉语数字转换成阿拉伯数字](https://blog.csdn.net/ggggwhw/article/details/119961135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值