【问题标题】:Convert string which is a number in string form into integer number将字符串形式的数字字符串转换为整数
【发布时间】:2020-10-08 16:17:07
【问题描述】:
如果给定的字符串是一个数字,我们可以将字符串转换为整数,但是如果它是一个含义是数字的字符串,我们如何转换它
例如。
A=“一个”
我知道字符串 'one' 表示整数形式的 1,但我如何将其转换为 1
及其开始
变量A可以包含多于一位的数字
请帮忙!!!!
先谢谢了???
【问题讨论】:
标签:
python
string
integer
【解决方案1】:
我不确定是否有自动执行此操作的包,但您可以制作自己的映射...
name_num_map = {"ZERO":0, "ONE":1}
num_name = "One"
num = name_num_map[num_name.upper()]
如何处理多于一位的数字变成了解析/语法问题。一个简单的解决方案是假设所有单词(或至少正则表达式认为是一个单词)构成常规十进制排名顺序的数字。所以,你会得到
import re
name_num_map = {"ZERO":0, "ONE":1} # and etc...
def numerizer(s):
digits = [name_num_map[name.upper()] for name in re.findall(r"\w+", s)]
rank = 1
val = 0
while digits:
val += digits.pop() * rank
rank *= 10
return val
num = numerizer("one zero, one")
print(num)
【解决方案2】:
最简单的解决方案是使用word2number
$ pip install word2number
$ python
>>> from word2number import w2n
>>> w2n.word_to_num("one")
1
>>> w2n.word_to_num("nine thousand")
9000
>>> A = "one"
>>> w2n.word_to_num(A)
1