質問

urllib2を使用してページを読み取ります。ソースで簡単な正規表現を実行し、いくつかの変数を取り出す必要がありますが、<=>は文字列ではなくファイルオブジェクトとして表示されます。

私はpythonが初めてなので、ファイルオブジェクトを使用してこれを行う方法を確認するのに苦労しています。これを文字列に変換する簡単な方法はありますか?

役に立ちましたか?

解決

対話モードでPythonを使用して、ソリューションを検索できます。

fがオブジェクトの場合、dir(f)を入力してすべてのメソッドと属性を表示できます。 readと呼ばれるものがあります。 help(f.read)を入力すると、f.read()がファイルオブジェクトから文字列を取得する方法であることがわかります。

他のヒント

ドキュメント file.read()から(私の強調) :

  

file.read([size])

     

ファイルから最大でsizeバイトを読み取ります(sizeバイトを取得する前に読み取りがEOFに達した場合は少なくなります)。サイズ引数が負であるか省略されている場合、EOFに達するまですべてのデータを読み取ります。 バイトは文字列オブジェクトとして返されます。 EOFが直ちに検出されると、空の文字列が返されます。 (ttyなどの特定のファイルでは、EOFに達した後も読み取りを続けるのが理にかなっています。)このメソッドは、可能な限りsizeバイトに近い値を取得するために、基になるC関数freadを複数回呼び出す場合があります。また、非ブロックモードでは、サイズパラメータが指定されていなくても、要求されたデータよりも少ないデータが返される場合があることに注意してください。

大きな文字列オブジェクトの正規表現検索は効率的ではない可能性があることに注意し、 file.next()(ファイルオブジェクトは独自のイテレーターです。)

Michael Foord、別名Voidspaceには、urllib2に関する優れたチュートリアルがあります。 urllib2-不足しているマニュアル

あなたがしていることは非常に簡単なはずです。次のサンプルコードを確認してください。

import urllib2
import re
response = urllib2.urlopen("http://www.voidspace.org.uk/python/articles/urllib2.shtml")
html = response.read()
pattern = '(V.+space)'
wordPattern = re.compile(pattern, re.IGNORECASE)
results = wordPattern.search(html)
print results.groups()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top