如果提供偏移量作为输入,如何在两个模式之间打印子字符串



如何打印出现在两个模式之间的子字符串?还提供了字符串中一个字符的偏移量作为输入,以选择需要打印哪个子字符串。

string = '<p class="one">A quick brown fox</p><p class="two">Jumps over</p>'

需要打印的子字符串位于模式"></p>之间。

如果提供的偏移量为20,则应打印A quick brown fox。如果提供的偏移量是55,那么应该打印Jumps over,这个偏移量应该作为输入接收。

这个偏移量似乎被作为搜索离左最近的">和离右最近的</p>的起点。

<p class="one">A quick brown fox</p><p class="two">Jumps over</p>
^                                  ^
offset 20                          offset 55

换句话说,在子字符串中从开始到偏移量找到最右边的">,在子字符串中从偏移量到结束找到最左边的</p>

为此,有findrfind字符串方法。

>>> string.rfind('">', 0, 20)
13
>>> string.rfind('">', 0, 55)
49
>>> string.find('</p>', 20)
32
>>> string.find('</p>', 55)
61

现在可以使用这些索引对字符串进行切片。您必须考虑到rfind">之前返回索引,但是您需要在之后对进行切片,因此您必须将其长度(2)添加到切片的开始索引。

>>> start = string.rfind('">', 0, 20) + 2
>>> end = string.find('</p>', 0, 20)
>>> string[start:end]
'A quick brown fox'

最新更新