code: def _isnumber(string):
      
      if not _isconvertible(float, string):
          return False
      elif isinstance(string, (_text_type, _binary_type)) and (
              math.isinf(float(string)) or math.isnan(float(string))):
          return string.lower() in ['inf', '-inf', 'nan']
      return True
docs: >>> _isnumber("123.45")
      True
      >>> _isnumber("123")
      True
      >>> _isnumber("spam")
      False
      >>> _isnumber("123e45678")
      False
      >>> _isnumber("inf")
      True