【问题标题】:Python code for calculating number of an alphabet用于计算字母数量的 Python 代码
【发布时间】:2018-11-08 01:45:35
【问题描述】:

我需要找到字母范围内的字母编号,即 a = 1, b=2 , c =3.... 所以如果我得到 a 那么返回值应该是 1

在 python(inbuilt) 中是否提供了一种更短的方法来查找它,而不是声明一个包含 26 个字母的字典及其受尊重的值。

如果你知道这样的功能,请帮忙.....

【问题讨论】:

标签: python


【解决方案1】:

使用ord()

>>> c = 'f'
>>> ord(c) - ord('a') + 1
6

如果你想让 'f' 和 'F' 都返回 6,请使用 lower()

>>> c = 'F'
>>> ord(lower(c)) - ord('a') + 1
6

您可能还对chr()感兴趣

>>> c = 'f'
>>> chr(ord(c) + 1)
'g'

【讨论】:

【解决方案2】:

只是:

ord(c)%32

可以同时处理上下。

【讨论】:

  • 虽然回想起来很明显,但我没有意识到(或记得)% 32 会起作用。谢谢!
【解决方案3】:

如果你只需要 A 到 Z,那么你可以使用 ord:

ord(c) - ord('A') + 1

【讨论】:

    【解决方案4】:
    >>> alphadict = dict((x, i + 1) for i, x in enumerate(string.ascii_lowercase))
    >>> alphadict['a']
    1
    

    【讨论】:

    • alphadict = dict(enumerate(string.ascii_lowercase, start=1))
    • @THC4k:这将反转键和值。
    • @Kabie:哎呀,你是对的。至少start 部分很有用。
    【解决方案5】:

    函数 ord('a') 将返回当前文本编码中 'a' 的数值。您可能可以使用它并做一些简单的数学运算来转换为 1、2、3 类型的映射。

    【讨论】:

      【解决方案6】:

      TL;DR

      def lettertoNumber(letter):
          return ord(letter.upper()) - 64
      

      详细说明

      ord(char) 返回该字符的 Unicode 编号,但我们正在寻找 a = 1, b = 2, c = 3

      但在 Unicode 中,我们得到 A = 65, B = 66, C = 67

      但是,如果我们从所有这些字母中减去 64,我们会得到 A = 1, B = 2, C = 3。但这还不够,因为我们还需要支持小写字母!

      由于是小写字母,我们需要使用.upper()将字母变为大写,这样它就可以自动使用ord(),结果不大于26,这给了我们TL;DR 部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-25
        • 2023-03-21
        • 2015-07-28
        • 2019-01-30
        相关资源
        最近更新 更多