我有一个名为s:
的字符串s = "Temperature is 15 degree Celsius. It is expected to be hotter tomorrow, say, 20 degree Celsius."
我希望在向后方向找到最接近"degree"
的单词"tomorrow"
。
首先,我找到'tomorrow'
的位置,然后从先前找到的位置向后搜索,找到单词"degree"
。
第一步是:
index = s.index('tomorrow')
如何进行第二步?
答案 0 :(得分:3)
这是你想要的吗?
index = s.index('tomorrow')
index2 = s.rfind('degree', 0, index)
答案 1 :(得分:0)
如你所说,找到“明天”的位置,接下来,你使用 rfind (找到右边),你会找到离“明天”最近的位置。
s = "Temperature is 15 degree Celsius. It is expected to be hotter tomorrow, say, 20 degree Celsius."
index = s[0:s.index("tomorrow")].rfind("degree")
答案 2 :(得分:0)
此递归生成器函数生成另一个字符串中两个子字符串的所有索引对。然后,您可以使用min
和适当的键函数来查找索引最接近的那个:
def pairs(s, s1, s2, i=0):
i1 = s.find(s1, i) # start looking at index i
i2 = s.find(s2, i1) # start looking at index i1
if i2 < 0 or i1 < 0: # one wasn't found
return
yield i1, i2
yield from pairs(s, s1, s2, i2)
s = 'xx ab cd xxx ab xx cd'
s1, s2 = 'ab', 'cd'
l = list(pairs(s, s1, s2))
# [(3, 6), (13, 19)]
min(l, key=lambda x: x[1]-x[0]) # indexes of s1, s2 in s where they are closest
# (3, 6)