2011-10-19 8 views
0

bisect_right()を使用してtxtファイルを検索しています。 テキストファイルの各行には、次の文字列 "word1 word2(tab)number"が含まれています。つまり、空白(word1とword2)、タブ、および数字で区切られた2つの単語です。 ファイルをreadlines()でリストとして読みました。 パラメータ "word1 word2"(word1(空白)word2)でbisect_rightを使用して、リスト内の(サブ)文字列 "word1 word2"が見つかったインデックスを検索しています。 bisect_rightは正しい場所を見つけるように見え、右側にインデックスの代わりに(サブ)文字列が置かれている実際のインデックスを返します。 (副)文字列(word1(空白)word2)がリストに存在する場合、bisect_rightは右にインデックスを戻すべきではありませんか?部分文字列を検索するときに問題になることはありますか?Python 2.6 bisect_rightインデックス(index + 1)の代わりにインデックスを返す

+0

文字列のみを本当に解析しているのであれば、 'split()'と[関連する文字列メソッド](http://docs.python.org/library/stdtypes.html#string-methods)を使用する方が、物事と – brc

答えて

1

bisectモジュールを使用した検索では、インデックスではなく「挿入ポイント」が返されます。挿入ポイントは、の間の2つの値です。これはこのように使用されることを意図していますs.insert(i, 'new value')

挿入ポイントの代わりに、シーケンス内の値のインデックスを検索する必要があります。ドキュメントの例では、これを行う方法を示すために:http://docs.python.org/library/bisect.html#searching-sorted-listsもちろん

、すべてのみ動作リスト・オブ・ストリングは、バイナリサーチの前にソートされますが、あなたはおそらく既にその:-)を知っていれば

関連する問題