【问题标题】:Convert given input from string to integer or float in python and if the input is string or character it can able handle it?在python中将给定的输入从字符串转换为整数或浮点数,如果输入是字符串或字符,它可以处理吗?
【发布时间】:2018-12-18 16:52:28
【问题描述】:

输入:'aa''22''2.45'

input ='22'
try:
   print int(input)
except ValueError:
   print float(input)

输入为'aa'或'example'时如何处理上述代码?

【问题讨论】:

  • 另一个 try-except 在您当前的 except 子句中。
  • 决定你想用这样的输入做什么。别理他们?跳过他们?然后在它周围写一个 if 条件。
  • 为什么不简单地将所有值转换为 float 而不是 int 和 float 并环绕 try catch 块
  • 谢谢@Ev.Kounis --- 这很容易解决了我的问题..

标签: python string python-2.7 floating-point integer


【解决方案1】:

我认为最简单的处理方法是先检查输入字符串是否为数字:

https://www.tutorialspoint.com/python/string_isnumeric.htm

if input.isnumeric():
    print int(input)
else:
    try
        print float(input)
    except ValueError:
        # Do nothing

但是,如果您可以完全避免异常,代码会更好 - 异常处理可能会非常昂贵。

这个整数测试答案解释了为什么异常处理会很昂贵:https://stackoverflow.com/a/9859202/8358096

为避免经常遇到第二个异常,您可以使用下面提到的 isalpha 函数。

if input.isnumeric():
    print int(input)
else:
    if not input.isalpha():
        try
            print float(input)
        except ValueError:
            # Do nothing

【讨论】:

  • '22.2'.isnumeric() 将返回 False
【解决方案2】:

你应该使用str.isalpha

只有在 input = 'a2' 这样的情况下才会出现这种情况。

inputs = ['aa','22','2.45']

for input in inputs:
   if not input.isalpha():
      try:
         print int(input)
      except ValueError:
         print float(input)

【讨论】:

    【解决方案3】:
    s = 'aa'
    
    try:
       print int(s)
    except ValueError:
       try:
          print float(s)
       except:
          print 'its is a string'
    

    【讨论】:

    • 解释,发布的代码的作用以及它如何解决问题中的问题,很少不能改善答案。
    • 此代码处理字符串。前面的代码不允许使用字符或字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 2021-03-07
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多