【问题标题】:How to pass a string that read from keyboard to functions such as isdecimal?如何将从键盘读取的字符串传递给 isdecimal 等函数?
【发布时间】:2016-08-09 04:23:14
【问题描述】:

我在这里使用的是 Python 2.7.4,我知道如何将字符串定义为 Unicode,通过

a = u"abcd"

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

│AttributeError: 'str' object has no attribute 'isdecimal'

有什么我可以使用的,以便我可以读取字符串,并将这些字符串传递给这些函数,例如 isdecimal?

我可以给你解释一个例子。

a = raw_input()

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

print(a.isdecimal())

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

【问题讨论】:

    标签: python string unicode


    【解决方案1】:

    鉴于您编写问题的方式,您真正想知道该怎么做: 如何将 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。*

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 这仅检查函数是否存在。 isnumerical, isdecimal 是 unicode 对象的函数。 isdigit 是 unicode 和 str 的属性。您的代码不起作用,首先因为这些函数要么在对象中,要么在类中,您不能将它们称为内置函数。其次,当您将输入转换为 int 并且 int 类型没有提到的功能时。
      • @DallaRosa,好的,谢谢
      • 如果您修正了答案(尝试在某些输入中运行您的代码),我很乐意删除 -1 :)
      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 2022-06-30
      • 1970-01-01
      • 2017-07-29
      相关资源
      最近更新 更多