尽管尝试并除外ValueError

时间:2020-07-03 01:36:18

标签: python-3.x try-catch valueerror except

我正在使用try和except来防止ValueError,但是我仍然得到它,我不明白:

if ('Address' and 'Phone') in text_string:
    try:
        pos_1 = text_string.index('Address')
        pos_2 = text_string.index('Phone')
        output['address'] = text_string[pos_1+7:pos_2]
    except ValueError:
        output['address'] = None

我在这里收到ValueError:

 pos_1 = text_string.index('Address')

但是由于我已经过滤了if子句,所以我不应该收到ValueError消息吗?

1 个答案:

答案 0 :(得分:0)

尽管Nick's评论已经可以解决问题,但是由于背后的原因,这对新来者很有帮助。

好的,所以这里的问题是最初的if语句。

('Address' and 'Phone') in text_string等效于'Phone' in text_string,因为在这里,非空字符串在逻辑上为True,并且它与另一个字符串,例如and的{​​{1}}产生s2

因此,这里s2('Address' and 'Phone')相同,因此,您只需要检查'Phone''Phone'的可用性,从而检查text_string的可用性。

因此,代码应为

Value Error