如何打印出现在两个模式之间的子字符串?还提供了字符串中一个字符的偏移量作为输入,以选择需要打印哪个子字符串。
。
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>
。
为此,有find
和rfind
字符串方法。
>>> 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'