检查子字符串是不起作用

时间:2016-05-25 15:47:00

标签: python

我想检查一个子字母,所以我编写了这段代码(Python 2.7):

print text
if ('e' or 'E') in text:
    text = "%s"%float(text)
    print text

建议here

text是一个变化的变量,它具有值0E-7

然而,这不起作用。 当我调试时,它跳过if块。

为什么条件是假的?

3 个答案:

答案 0 :(得分:3)

您的代码所询问的是“('e' or 'E')中的值text?”评估('e' or 'E')时,您会获得'e'。这是修复:

if ('e' in text) or ('E' in text):

答案 1 :(得分:1)

('e' or 'E')评估为'e'。因此,您正在测试if 'e' in text:这里不正确,因为E中的0E-7是大写的。

在这里你可以互动地看到它:

>>> text = '0E-7'                  # note that E is uppercase
>>> ('e' or 'E') in text           # why is this false?
False
>>> ('E' or 'e') in text           # but true here?
True
>>> ('e' or 'E')                   # aha! 'or' returns the first truthy value
'e'
>>> 'e' in text.lower()            # this fixes it
True
>>> any(c in text for c in 'eE')   # another possible fix
True
>>> not set(text).isdisjoint('eE') # yet another way to do it
True

答案 2 :(得分:0)

('e' or 'E')是一个布尔表达式,它被评估为'e'

我的建议是:

if any(char in text for char in ('e', 'E')):
    # ...