文字列と文字列への任意のインデックスがあります。インデックスの前に最初に出現するサブストリングを見つけたい。
例:インデックスとstr.rfind()
を使用して2番目のIのインデックスを見つけたい
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', index)
#returns = 36 and not 16
Rfind()は2番目のI(16)のインデックスを返すと予想しますが、36を返します。ドキュメントで調べた後、rfindは逆検索をサポートしていません。
私はPythonが初めてなので、逆検索する組み込みソリューションがありますか?python [::-1]マジックで文字列を逆にするようなものです。またはfindなどを使用しますか?または、文字列ごとに文字ごとにイテレートを逆にする必要がありますか?
呼び出しは、rfindに、インデックス34でstart lookingを指示します。文字列を受け取る rfind overload を使用したい、開始と終了。文字列の先頭から開始するように指示します(0
)そして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_I
16
私は、rpartitionによる文字列の末尾からn回の検索を実装する方法に興味を持ち、このn番目のrpartitionループを実行しました。
orig = s = "Hello, I am 12! I like plankton but I don't like Baseball."
found = tail = ''
nthlast = 2
lookfor = '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 + tail
else:
print(s,found,tail)