如何将字母转换为相应的数值?
How do I convert letters to their corresponding number value?
我对 python 比较陌生。作为一个小型项目,我正在创建一个程序,该程序涉及获取一个单词两个字符串并将每个字符转换为相应的字母值(例如 A = 1、C = 3、Z = 26)。我想找到一种方法来执行此操作,而无需将所有 26 个字母分配给字典中的数字。我在网上找到的每个算法似乎都不起作用或者我不明白。
我完全不知道该怎么做。如果有人能指出我正确的方向,我将不胜感激。
谢谢
你可以使用ascii码。例如:
num = ord(letter1.lower()) - ord('a') + 1
每个字符由 ascii code 中的一个数字表示。
您可以使用 ord
将您的字母转换为 ascii 代码,并从中减去字母 'a' 的 ascii 代码。所有字母表在 ascii table 中都是连续的。我添加了 .lower()
,因为如果你有大写或小写,你应该将它分成两种情况。
完整代码看起来像这样(在变量 letter1
:
中给定一个字母
if letter`.islower():
num = ord(letter1) - ord('a') + 1
else:
num = ord(letter1) - ord('A') + 1
(+1 表示您从 1 而不是 0 开始计数)
您可以使用内置的 ord
函数来 return 任何字符的 unicode 代码点(作为整数)。
>>> ord('A')
65
如果您愿意,可以从中减去一个偏移量。
>>> offset = ord('A') - 1
>>> ord('A') - offset
1
>>> ord('B') - offset
2
这里:
string = 'hello'
nums = ''
for l in string:
nums += str(ord(l)-96)+' '
print(nums)
ord() 函数returns 表示 Unicode 字符的整数。
例如,'a'在Unicode字符中是96,'b'是97,'c'是98。
使用ord
:
A='lksdfj'
for c in A:
print(c,':',ord(c))
输出:
l : 108
k : 107
s : 115
d : 100
f : 102
j : 106
内置的string
模块提供包含字母表的字符串。您可以使用一行代码从字母到数字进行字典:
import string
letter_to_number = {l:n+1 for (l,n) in zip(string.ascii_uppercase, range(len(string.ascii_uppercase)))}
# {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8, 'I': 9, 'J': 10, 'K': 11, 'L': 12, 'M': 13, 'N': 14, 'O': 15, 'P': 16, 'Q': 17, 'R': 18, 'S': 19, 'T': 20, 'U': 21, 'V': 22, 'W': 23, 'X': 24, 'Y': 25, 'Z': 26}
例如...
letter = 'c'
print(ord(letter)-96)
我对 python 比较陌生。作为一个小型项目,我正在创建一个程序,该程序涉及获取一个单词两个字符串并将每个字符转换为相应的字母值(例如 A = 1、C = 3、Z = 26)。我想找到一种方法来执行此操作,而无需将所有 26 个字母分配给字典中的数字。我在网上找到的每个算法似乎都不起作用或者我不明白。
我完全不知道该怎么做。如果有人能指出我正确的方向,我将不胜感激。
谢谢
你可以使用ascii码。例如:
num = ord(letter1.lower()) - ord('a') + 1
每个字符由 ascii code 中的一个数字表示。
您可以使用 ord
将您的字母转换为 ascii 代码,并从中减去字母 'a' 的 ascii 代码。所有字母表在 ascii table 中都是连续的。我添加了 .lower()
,因为如果你有大写或小写,你应该将它分成两种情况。
完整代码看起来像这样(在变量 letter1
:
if letter`.islower():
num = ord(letter1) - ord('a') + 1
else:
num = ord(letter1) - ord('A') + 1
(+1 表示您从 1 而不是 0 开始计数)
您可以使用内置的 ord
函数来 return 任何字符的 unicode 代码点(作为整数)。
>>> ord('A')
65
如果您愿意,可以从中减去一个偏移量。
>>> offset = ord('A') - 1
>>> ord('A') - offset
1
>>> ord('B') - offset
2
这里:
string = 'hello'
nums = ''
for l in string:
nums += str(ord(l)-96)+' '
print(nums)
ord() 函数returns 表示 Unicode 字符的整数。 例如,'a'在Unicode字符中是96,'b'是97,'c'是98。
使用ord
:
A='lksdfj'
for c in A:
print(c,':',ord(c))
输出:
l : 108
k : 107
s : 115
d : 100
f : 102
j : 106
内置的string
模块提供包含字母表的字符串。您可以使用一行代码从字母到数字进行字典:
import string
letter_to_number = {l:n+1 for (l,n) in zip(string.ascii_uppercase, range(len(string.ascii_uppercase)))}
# {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8, 'I': 9, 'J': 10, 'K': 11, 'L': 12, 'M': 13, 'N': 14, 'O': 15, 'P': 16, 'Q': 17, 'R': 18, 'S': 19, 'T': 20, 'U': 21, 'V': 22, 'W': 23, 'X': 24, 'Y': 25, 'Z': 26}
例如...
letter = 'c'
print(ord(letter)-96)