2017-04-11 15 views
0

エクリプスない:BeautifulSoupコードはIPythonのノートブックで動作しますが、Jupyter IPythonのノートブックから実行すると、次のコードは正常に動作します

from bs4 import BeautifulSoup 
xml_file_path = "<Path to XML file>" 
s = BeautifulSoup(open(xml_file_path), "xml") 

しかし、同じパイソンを使用してのEclipse/PyDevは(から実行したときにスープを作成するときにそれが失敗しましたインタプリタ):

Traceback (most recent call last): 
    File "~/parser/scratch.py", line 3, in <module> 
    s = BeautifulSoup(open(xml_file), "xml") 
    File "/anaconda/lib/python3.5/site-packages/bs4/__init__.py", line 175, in __init__ 
    markup = markup.read() 
    File "/anaconda/lib/python3.5/encodings/ascii.py", line 26, in decode 
    return codecs.ascii_decode(input, self.errors)[0] 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 1812: ordinal not in range(128) 
  • Pythonバージョン:3.5.2(アナコンダ4.1.1)
  • BeautifulSoup:バージョン4
  • IPythonノートバージョン:4.2.1
  • Eclipseのバージョン:Mars.2リリース(4.5.2)
  • PyDevはバージョン:5.1.2.20160623256
  • のMac OS X:エルキャピタン10.11.6

更新日: Eclipseで問題の原因となっているファイルの文字はですが、これはIPython Notebookでは問題になりません!この文字をXMLファイルから削除すると、コードはEclipseでも正常に動作します。 Eclipseにいくつかの設定がありますか?変更する必要があるので、コードがこの(もしかしたら他の)文字で失敗しないでしょうか?

+0

[UnicodeDecodeError: 'ascii'コーデックは、位置1のバイト0xefをデコードできません](http://stackoverflow.com/questions/10561923/unicodedecodeerror-ascii-codec-cant-decode-byte-0xef-インポジション-1) – DyZ

+0

@DYZ - ここには印刷はありません。私がスープを作るときに起こります。 – arun

+0

'open(xml_file_path、" utf-8 ")'を試したことがありますか? –

答えて

0

open(xml_file_path、 'rb')で開く必要があると思います。両方で同じように動作するようにエンコーディングを指定してください(そうしないと、バイトからユニコードに暗黙的に変換されます)。 Eclipseには何か、IPythonには別のものがあるので、envに基づいた別のエンコーディングを使用しているようです。

with open(xml_file_path, 'rb') as stream: 
    contents = stream.read() 
    contents.decode('utf-8') 

をあなたは本当に(その文字が有効なUTF-8文字であるかどうかを確認するすなわち:)UTF-8としてそれを復号化することができるしている場合だけでチェックする:

はやってみてください。

関連する問題