python - 检查字符串是否为 float

标签 python string

我假设接收一个输入并根据输入是否为有效数字返回 true 或 false。以下是一些示例:

"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true
" -90e3   " => true
" 1e" => false
"e3" => false
" 6e-1" => true
" 99e2.5 " => false
"53.5e93" => true
" --6 " => false
"-+3" => false
"95a54e53" => false

我有一个所有有效字符的列表,我决定使用切片符号来查看输入的第 0 个索引中的哪个字符与任何有效字符匹配。但是,代码将输入 9 误读为 false。这是我目前的完整代码。我还没有检查所有条件:

class Solution:
    def isNumber(self, s: str) -> bool:
        valid_char = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '+', 'e', '.']
        str_lst = list(s)

        if str_lst[0] in valid_char[0:10]:
            return True
        else:
            return False

最佳答案

我认为最好的方法是使用 try/except 子句来尝试将字符串转换为 float:

"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true
" -90e3   " => true
" 1e" => false
"e3" => false
" 6e-1" => true
" 99e2.5 " => false
"53.5e93" => true
" --6 " => false
"-+3" => false
"95a54e53" => false

让我们用上面的字符串生成一个列表:

l = ["0", " 0.1 ", "abc", "1 a", "2e10", " -90e3   ", " 1e", "e3", 
     " 6e-1", " 99e2.5 ", "53.5e93", " --6 ", "-+3", "95a54e53"]

def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        return False

list(map(is_number, l))
# [True, True, False, False, True, True, False, False, True, False, 
#  True, False, False, False]

关于python - 检查字符串是否为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58096501/

相关文章:

javascript - 正则表达式不匹配所有事件

string - 如何在 Bash 脚本中从一系列 <string>_# 文件名中选择最大的数字

python - 在 python 中替代 c++ STD::map(需要快速的 lower_bound 方法)

c# - Python 和 C# 之间的 IPC

python - 如何修复 UnboundLocalError 错误?

regex - 试图在 MacOS 上快速解析一个小项目的 Localizable.string 文件

python - 将两个 pandas DataFrame 与一个唯一的列组合起来,并保留行索引 (Python)

python - 按浮点元素对元组进行排序

c++ - 内存中分配的 std::string 在哪里?

mysql - MySQL 中文本列表的长度(基本字符串操作)