2017-04-11 6 views
0

이클립스하지 :BeautifulSoup로 코드 IPython 노트북에서 작동하지만 Jupyter IPython 노트북에서 실행하면 다음 코드는 잘 작동

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

그러나 같은 파이썬을 사용하는 이클립스/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) 
  • 파이썬 버전 : 3.5.2 (아나콘다 4.1.1)
  • BeautifulSoup로 : 버전 4
  • 01 23,516,
  • IPython 노트북 버전 : 4.2.1
  • 이클립스 버전 : Mars.2 출시 (4.5.2)
  • 의 PyDev 버전 : 5.1.2.20160623256
  • 맥 OS X : 엘 캐피 10.11.6

업데이트 : Eclipse에서 문제의 원인이되는 파일의 문자는 이지만, 이로 인해 IPython Note!에 문제가 발생하지 않습니다! XML 파일에서이 문자를 제거하면이 코드는 Eclipse에서도 잘 작동합니다. 이클립스에서 코드가이 (그리고 아마도 다른 그런) 문자에서 실패하지 않도록 변경해야하는 설정이 있습니까?

+0

가능한 유니 코드 [UnicodeDecodeError : 'ascii'코덱으로 위치 1의 바이트 0xef를 디코딩 할 수 없습니다.] (http://stackoverflow.com/questions/10561923/unicodedecodeerror-ascii-codec-cant-decode-byte-0xef- in-position-1) – DyZ

+0

@DYZ - 여기에는 인쇄가 없습니다. 나는 수프를 만들 때 일어난다. – arun

+0

'open (xml_file_path, "utf-8")'을 시도해 보셨습니까? –

답변

0

open (xml_file_path, 'rb')을 사용하여 열어야한다고 생각하고 - 양쪽에서 동일하게 작동하는 인코딩을 지정하십시오 (그렇지 않으면 바이트에서 유니 코드로의 암시 적 변환이 발생 함). 분명히 그것은 env에 기반한 다른 인코딩을 사용합니다. Eclipse에 뭔가 있고 IPython에 또 다른 것을 가지고 있기 때문입니다.) 일을

보십시오 : 당신이 (즉, 문자가 유효한 UTF-8 문자인지 확인하기 : 즉) UTF-8로 디코딩 할 정말 할 수 있다면

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

그냥 확인.

관련 문제