奇怪的数字字符串处理

众所周知,在某些特殊情况下,有些人会使用各种奇奇怪怪的符号来表示数字。例如有些人写自己的 QQ 号,是这样写的:
加暁眉扣:玖壹五捌⑦二Ⅲ9
再不久前我是这样创建一个字典并写一个转换方法来对其进行处理:
{‘一’: 1,‘壹’: 1, ‘①’: 1,‘二’: 2, ‘三’: 3, …}
显然,这样写起来非常麻烦简直是穷举。
直到我发现了这个函数:numeric()
实际上 Python 是认识这些表示数字的符号的,我们给他正确的指令,Python 自动就能转换。例如:

from unicodedata import numeric
print(numeric('五'))
print(numeric('Ⅲ'))
print(numeric('玖'))
print(numeric('3'))

输出结果:
5.0
3.0
9.0
3.0

Process finished with exit code 0

但是它存在一个问题:

print(numeric(‘五 9’))
TypeError: numeric() argument 1 must be a unicode character, not str

只能转换单个字符
所以我们需要对其进行遍历

from unicodedata import numeric
data = ‘玖壹五捌⑦二Ⅲ9’
result = 0
for char in data:
result = 10 * result + int(numeric(char))
print(result)
输出结果:
91587239
Process finished with exit code 0

这样我们就得到小妹的 QQ 啦,方法分享给大家,希望大家也能如愿加上小妹们的 QQ