53

I have a string:

myStr = "Chicago Blackhawks vs. New York Rangers"

I also have a list:

myList = ["Toronto Maple Leafs", "New York Rangers"]

Using the endswith() method, I want to write an if statement that checks to see if the myString has ends with either of the strings in the myList. I have the basic if statement, but I am confused on what I should put in the parentheses to check this.

if myStr.endswith():
    print("Success")
Mazdak
  • 105,000
  • 18
  • 159
  • 188

3 Answers3

99

endswith() accepts a tuple of suffixes. You can either convert your list to a tuple or just use a tuple in the first place instead of list.

In [1]: sample_str = "Chicago Blackhawks vs. New York Rangers"

In [2]: suffixes = ("Toronto Maple Leafs", "New York Rangers")

In [3]: sample_str.endswith(suffixes)
Out[3]: True

From doc:

str.endswith(suffix[, start[, end]])

Return True if the string ends with the specified suffix, otherwise return False. suffix can also be a tuple of suffixes to look for. With optional start, test beginning at that position. With optional end, stop comparing at that position.

Mazdak
  • 105,000
  • 18
  • 159
  • 188
  • If I do that my if statement will read "If myString ends with either 'Chicago Blackhawks' or 'New York Rangers', print 'Success'". Is this correct? –  Feb 19 '16 at 17:15
  • @CalebRudnicki Indeed. You can do `if myStr.endswith(tuple(myList)):` – Mazdak Feb 19 '16 at 17:20
  • This answer should really be accepted, though the OP may not have an account any more. Thanks for this though, it helped me out! It seems that you can insert the tuple directly in the brackets too, like `word.endswith(('foo', 'bar'))` – Lou Feb 25 '21 at 14:33
16

You could use the keyword any:

if any(myStr.endswith(s) for s in myList):
    print("Success")
gtlambert
  • 11,711
  • 2
  • 30
  • 48
0

You may do it like this :)

for i in myList:
    if myStr.endswith(i):
        print(myStr + " Ends with : " + i)