python - 如果字符串只包含 0-9、e、+、-、空格、制表符,则在 python 中进行优雅的测试

标签 python

如果字符串符合以下条件,我想找到最有效和最简单的方法来在 python 中进行测试:

  • 不包含任何内容,除了:
    • 数字(数字 0-9)
    • 小数点:'.'
    • 字母“e”
    • 符号“+”或“-”
    • 空格(任意数量)
    • 标签(任意数量)

我可以使用嵌套的“if”循环等轻松地做到这一点,但我想知道是否有更方便的方法...

例如,我想要字符串:

0.0009017041601  5.13623e-05   0.00137531   0.00124203

为“真”,以下所有为“假”:

#   File generated at 10:45am Tuesday, July 8th
#   Velocity:  82.568
#   Ambient Pressure:  150000.0

     Time(seconds)      Force_x           Force_y           Force_z

最佳答案

这对于使用 character class 的正则表达式来说很简单:

import re
if re.match(r"[0-9e \t+.-]*$", subject):
     # Match!

然而,这将(根据规则)也匹配 eeeee+-e-+ 等...

如果您真正想做的是检查给定的字符串是否为有效数字,您可以简单地使用

try:
    num = float(subject)
except ValueError:
    print("Illegal value")

这将处理像 "+34""-4e-50""3.456e7 " 这样的字符串。

关于python - 如果字符串只包含 0-9、e、+、-、空格、制表符,则在 python 中进行优雅的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27291079/

相关文章:

python - 在python中选择与另一列具有相同值的行中具有最高列值的csv行

python - 更改 get_context_data 中的查询集后分页不起作用

python - 从 Python 运行 SQL 'Kill'

python 正则表达式: extract special substring in a hyperlink

python - 使用 Django 获取具有尽可能接近日期的不同条目的查询集

python - scrapy:CrawlSpider 中的 'exceptions.KeyError'

python - pandas 按多个值过滤列值

python - Python中的所有内容都可以转换为字符串吗?

python - Flask、nginx 和 uwsgi

python - 如何在 for 循环结束时执行命令?