如何将从键盘读取的字符串传递给isdecimal等函数?

时间:2016-08-09 04:23:15

标签: python string unicode

我在这里使用Python 2.7.4,我知道如何通过

将字符串定义为Unicode
a = u"abcd"

我尝试使用 raw_input() 从键盘读取字符串,我想将我读到的字符串传递给 isX() isdecimal() isalnum() 等功能。但是当我这样做时,我会收到这样的错误消息。

  

│AttributeError:'str'对象没有属性'isdecimal'

无论如何我可以使用,以便我可以读取字符串,并将这些字符串传递给这些函数,如isdecimal?

我可以向您解释一个示例案例。

a = raw_input()

我将'two'输入到变量 a 。然后,

print(a.isdecimal())

我想打印 False ,而不是打印给定的错误消息。

2 个答案:

答案 0 :(得分:0)

鉴于您撰写问题的方式,您真正想知道该怎么做: 如何将raw_input()的输出转换为unicode对象,以便您可以使用.isdecimal(),因为它只是一个Unicode对象函数。

要回答这个问题,您可以执行以下操作,在获取输入时自动执行转换:

text= raw_input().decode(sys.stdin.encoding or locale.getpreferredencoding(True))

整个代码看起来像这样:

import sys, locale
text= raw_input().decode(sys.stdin.encoding or locale.getpreferredencoding(True))
print(text.isdecimal())

顺便说一句,你有.isdigit()用于非Unicode(也就是普通字符串)。 为了避免使用字符串到Unicode转换的所有麻烦,如果你没有强烈的需要继续使用2.7,我建议你转到python 3. *

答案 1 :(得分:-1)

是的,例如我在下面尝试过: -

a = 0
try:
    a = int(raw_input())
    print isX(a)
except:
  print "Wrong Input"

在这种情况下,如果你传递一个字符串,那么它也能正常工作。