使用str.endswith()进行条件检查

时间:2015-10-07 02:01:26

标签: python conditional-expressions

我有以下字符串

mystr = "foo.tsv"

mystr = "foo.csv"

鉴于这种情况,我希望上面的两个字符串始终打印“OK”。 但为什么它会失败?

if not mystr.endswith('.tsv') or not mystr.endswith(".csv"):
    print "ERROR"
else:
    print "OK"

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

失败是因为mystr无法同时以.csv.tsv结尾。

因此,其中一个条件为False,当您使用not时,它变为True,因此您获得ERROR。你真正想要的是 -

if not (mystr.endswith('.tsv') or mystr.endswith(".csv")):

或者您可以使用De-Morgan's law使用and版本,这会使not (A or B)成为(not A) and (not B)

此外,正如问题中的评论中所述,str.endswith()接受要检查的后缀元组(因此您甚至不需要or条件)。示例 -

if not mystr.endswith(('.tsv', ".csv")):