今天改進爬蟲的時候有這樣的需求,如果是文字的數字把他轉化成數字存儲。
然后百度了一下沒什么能看的博客。
其實挺無奈的,搜出來的博客全是一樣的代碼,有的圖都是COPY,尤指CSDN,博客質量大多很差。懷疑博主轉的時候試了沒?
這樣COPY還不如不發,惡心。
於是自己寫了代碼,目前測試幾例沒什么問題,如果出現不規則的如”一二三四五萬“這種會出現問題,不過這種本來就不符合規范
代碼如下:
# 18.11.1更新,加入對諸如'人民幣貳仟陸佰玖拾陸萬陸仟零捌拾元玖角貳分'這種小數的判斷
1 # -*- coding=utf-8 -*- 2 # 18.10.29 3 # 文字數字(漢語)轉數字 4 # 18.11.1 5 # 更新對'人民幣貳仟陸佰玖拾陸萬陸仟零捌拾元玖角貳分'這種小數的判斷 6 7 cn_sum = { 8 '〇': '0', '一': '1', '二': '2', '三': '3', '四': '4', '五': '5', '六': '6', '七': '7', '八': '8', '九': '9', '零': '0', 9 '壹': '1', '貳': '2', '叄': '3', '肆': '4', '伍': '5', '陸': '6', '柒': '7', '捌': '8', '玖': '9', '貮': '2', '兩': '2', 10 } 11 12 cn_unit = { 13 '十': 10, 14 '拾': 10, 15 '百': 100, 16 '佰': 100, 17 '千': 1000, 18 '仟': 1000, 19 '萬': 10000, 20 '萬': 10000, 21 '億': 100000000, 22 '億': 100000000, 23 '兆': 1000000000000, 24 '角': 0.1, 25 '分': 0.01 26 } 27 28 29 def chn_to_sum(chn): 30 # 傳入字符串 31 sum = 0 32 lis = [] 33 flo = False 34 str_flo = '' 35 for i in chn: 36 if flo: 37 if i in cn_sum: 38 str_flo += cn_sum[i] 39 if i in cn_unit: 40 lis.append(cn_unit[i]) 41 else: 42 if i == '點': 43 flo = True 44 if i in cn_sum: 45 lis.append(cn_sum[i]) 46 if i in cn_unit: 47 lis.append(cn_unit[i]) 48 for k in range(len(lis)): 49 if k == len(lis)-1: 50 if str_flo: 51 sum += float('.'+str_flo) 52 if type(lis[k]) == str: 53 sum = sum+int(lis[k]) 54 if type(lis[k]) in [int, float]: 55 if lis[k] > sum: 56 sum = (sum+int(lis[k-1]))*lis[k] 57 else: 58 sum = sum + (int(lis[k-1])*lis[k]) 59 60 return round(sum, 2)
發現問題請提醒我,希望可以幫到你