문제

BeautifulSoup 3.1.0.1 및 Python 2.5.2로, 프랑스어로 웹 페이지를 구문 분석하려고합니다. 그러나 findall에 전화하자마자 다음과 같은 오류가 발생합니다.

UnicodeencodeError : 'ASCII'코덱은 1146 위치에서 문자 U ' xe9'를 인코딩 할 수 없습니다 : 범위가 아닌 서수 (128)

아래는 현재 실행중인 코드입니다.

import urllib2
from BeautifulSoup import BeautifulSoup
page = urllib2.urlopen("http://fr.encarta.msn.com/encyclopedia_761561798/Paris.html")
soup = BeautifulSoup(page, fromEncoding="latin1")
r = soup.findAll("table")
print r

왜 그런지 아이디어가 있습니까?

감사!

업데이트: RESQUESTED에 따르면 아래는 전체 트레이스 백입니다

Traceback (most recent call last):
  File "[...]\test.py", line 6, in <module>
    print r
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1146-1147: ordinal not in range(128)
도움이 되었습니까?

해결책

여기에 또 다른 아이디어가 있습니다. 터미널은 Python에서 유니 코드 문자열을 표시 할 수 없습니다. 통역사는 먼저 ASCII로 변환하려고합니다. 인쇄하기 전에 명시 적으로 인코딩해야합니다. 나는 정확한 의미를 모른다 soup.findAll(). 그러나 아마도 다음과 같습니다.

for t in  soup.findAll("table"):
    print t.encode('latin1')

만약에 t 정말 문자열입니다. 어쩌면 표시하려는 데이터를 빌드 해야하는 또 다른 객체 일 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top