【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2021-10-28
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多