3

有人可以帮我弄清楚如何将字符串转换为数字吗?假设用户输入“1-800-Flowers”我希望 python 显示“1-800-3569377”

到目前为止,我所拥有的是:

userInput = input("Please enter a phone number (e.g. 1-800-Flowers): ")
phoneNum = userInput.replace('-','')

这就是我所拥有的。任何帮助将非常感激

4

3 回答 3

3

使用str.translate

>>> pad = ['qz', 'abc', 'def', 'ghi', 'jkl', 'mno', 'prs', 'tuv', 'wxy']
>>> letter_to_numbers = {
...     ord(ch): ord(str(i))
...     for i, chs in enumerate(pad, 1)
...     for ch in chs
... } # Map ord('f') to ord('3'), ...
>>> "1-800-Flowers".lower().translate(letter_to_numbers)
'1-800-3569377'
于 2013-10-30T04:59:00.437 回答
1

有一个 for 循环遍历用户输入的字符串,然后对于每个字母或数字,使用 ord() 函数将其转换为其 ASCII 值。

other=[]
userInput = input("Please enter a phone number (e.g. 1-800-Flowers): ")
for i in userInput:
 other+=[ord(i)]

print(other)

不过,您所说的对我来说没有意义,因为"1-800-Flowers"不等于"1-800-3569377"将其转换为 ASCII,您甚至可以在ASCII 转换器站点上自行检查。但是,如果我说的是错误的,请纠正我。

于 2013-10-30T12:59:57.033 回答
0

以下是我如何通过更直接的翻译来做到这一点:

letters       = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
letter_digits = "22233344455566677778889999"
letter_to_digit = string.maketrans(letters+letters.lower(),letter_digits+letter_digits)

# convert letters to digits
new_phone = raw_phone.translate(letter_to_digit)
于 2015-12-11T04:36:00.063 回答