【问题标题】:Python Convert Letters NumbersPython 转换字母数字
【发布时间】:2013-10-30 04:53:19
【问题描述】:

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

到目前为止,我只有:

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

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

【问题讨论】:

    标签: string python-3.x


    【解决方案1】:

    使用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'
    

    【讨论】:

      【解决方案2】:

      有一个 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 converter site 上自行检查。但是,如果我说的有误,请纠正我。

      【讨论】:

        【解决方案3】:

        以下是我如何使用更直接的翻译:

        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)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-30
          • 2011-05-30
          • 1970-01-01
          • 1970-01-01
          • 2016-07-07
          相关资源
          最近更新 更多