我正在使用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消息吗?
答案 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