Python Reverse Find in String
Your call tell rfind
to start looking at index 34. You want to use the rfind overload that takes a string, a start and an end. Tell it to start at the beginning of the string (0
) and stop looking at index
:
>>> s = "Hello, I am 12! I like plankton but I don't like Baseball.">>> index = 34 #points to the 't' in 'but'>>> index_of_2nd_I = s.rfind('I', 0, index)>>>>>> index_of_2nd_I16
I became curious how to implement looking n times for string from end by rpartition and did this nth rpartition loop:
orig = s = "Hello, I am 12! I like plankton but I don't like Baseball."found = tail = ''nthlast = 2lookfor = 'I'for i in range(nthlast): tail = found+tail s,found,end = s.rpartition(lookfor) if not found: print "Only %i (less than %i) %r in \n%r" % (i, nthlast, lookfor, orig) break tail = end + tailelse: print(s,found,tail)