str.startswith with a list of strings to test for

后端 未结 2 461
盖世英雄少女心
盖世英雄少女心 2020-11-28 19:34

I\'m trying to avoid using so many if statements and comparisons and simply use a list, but not sure how to use it with str.startswith:

if link.         


        
相关标签:
2条回答
  • 2020-11-28 19:55

    You can also use any(), map() like so:

    if any(map(l.startswith, x)):
        pass # Do something
    

    Or alternatively, using a generator expression:

    if any(l.startswith(s) for s in x)
        pass # Do something
    
    0 讨论(0)
  • 2020-11-28 20:13

    str.startswith allows you to supply a tuple of strings to test for:

    if link.lower().startswith(("js", "catalog", "script", "katalog")):
    

    From the docs:

    str.startswith(prefix[, start[, end]])

    Return True if string starts with the prefix, otherwise return False. prefix can also be a tuple of prefixes to look for.

    Below is a demonstration:

    >>> "abcde".startswith(("xyz", "abc"))
    True
    >>> prefixes = ["xyz", "abc"]
    >>> "abcde".startswith(tuple(prefixes)) # You must use a tuple though
    True
    >>>
    
    0 讨论(0)
提交回复
热议问题