31

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

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

4

3 に答える 3

77

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

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

于 2008-12-06T12:47:18.957 に答える
14

doc file.read()から(私の強調):

file.read([サイズ])

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

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

于 2008-12-06T13:07:39.833 に答える
5

Voidspace としても知られる Michael Foord には、 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()
于 2008-12-06T13:17:59.300 に答える