0

文字列メソッドを使用して Web サイトからデータを抽出するためのこのコードを読みました。

def extract_results(data)
     start_index= data.find("<p>")
     while -1 != start_index:
         end_index = data.find("</p>", start_index)

ここでwhileループは何をしていますか? start_index が -1 と比較されるのはなぜですか?

4

1 に答える 1

1

str.find()テキストが見つからない場合の戻り値は -1 です。

str.find(sub[, start[, end]])
subが slice に含まれるように、 部分文字列subが見つかった文字列内の最小のインデックスを返します。オプションの引数startendは、スライス表記のように解釈されます。subが見つからない場合は -1 を返します。s[start:end]

ループは、そうでない場合、while効果的にコードを無限ループに陥らせ、あなたが私たちと共有したスニペットに続くコードがない限り役に立たない.start_index-1

おそらくreturn data[start_index + 3:end_index]、次の行のようなものがあると思われます。その場合、ステートメントif start_index > -1:の代わりに使用すると、はるかに読みやすくなります。while

もちろん、さらに下に設定されている可能性もあります。start_index

于 2013-04-05T13:50:18.030 に答える