將文字數字轉阿拉伯數字(Python)


今天改進爬蟲的時候有這樣的需求,如果是文字的數字把他轉化成數字存儲。

然后百度了一下沒什么能看的博客。

其實挺無奈的,搜出來的博客全是一樣的代碼,有的圖都是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)

 

發現問題請提醒我,希望可以幫到你


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM