質問

私は歴史的な株価をダウンロードして処理するためのスクリプトに取り組んでいます。 urllib.request.urlopenを使用したとき、すべてのファイル(b ' xef xbb xbf)に奇妙なテキストのプレフィックスを取得しました。ブラウザ(Firefox)。答えがありますが、そもそもなぜ問題を引き起こしているのかわかりません。私はそれをひもにしたことを強制したからかもしれませんが、それがなぜなのか、どのようにそれを回避するかはわかりません(代わりにurlretrieveを使用する以外)。コードは以下にあります。関連する行は行11です。コメントされたコードは、私がOrlopenを使用していたときです。

    #download a bunch of historical stock quotes from google finance

import urllib.request
symbolarray = []
symbolfile = open("symbols.txt")
for line in symbolfile:
    symbolarray.append(line.strip())
symbolfile.close()

for symbol in symbolarray:
    page = urllib.request.urlretrieve("http://www.google.com/finance/historical?q=NYSE:"+symbol+"&output=csv",symbol+".csv")
    #datafile = open(symbol+".csv","w")
    #datafile.write(str(page.read()))
    #datafile.close()
役に立ちましたか?

解決

0xef、0xbb、0xbfはです UTF-8のBOM. 。これは、これがUTF-8エンコードされた文字列であることを意味します。 Wiresharkを使用すると、それがずっとそこにあることがわかります。ほとんどのプログラムがそれを無視しているだけです。

それ以外の str(page.read()) 試してみてください page.read().decode('utf-8-sig') BOMを削除したい場合。保持したい場合は、「UTF-8」だけでデコードできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top