반응형
다른 웹 페이지 (다른 사이트)에서 가져온 텍스트의 유니 코드 문자를 처리하는 데 문제가 있습니다. BeautifulSoup을 사용하고 있습니다.
문제는 오류가 항상 재현 가능한 것은 아니라는 것입니다. 때로는 일부 페이지에서 작동하며 때로는 UnicodeEncodeError
를 발생시켜 경고합니다. 나는 내가 생각할 수있는 모든 것을 시도했지만, 어떤 종류의 유니 코드 관련 오류없이 일관되게 작동하는 것을 찾지 못했습니다.
문제를 일으키는 코드 섹션 중 하나는 다음과 같습니다.
agent_telno = agent.find('div', 'agent_contact_number')
agent_telno = '' if agent_telno is None else agent_telno.contents[0]
p.agent_info = str(agent_contact + ' ' + agent_telno).strip()
다음은 위의 스 니펫이 실행될 때 SOME 문자열에서 생성 된 스택 추적입니다.
Traceback (most recent call last):
File "foobar.py", line 792, in <module>
p.agent_info = str(agent_contact + ' ' + agent_telno).strip()
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)
일부 페이지 (또는 더 구체적으로 일부 사이트의 페이지)는 인코딩되고 다른 페이지는 인코딩되지 않을 수 있기 때문이라고 생각합니다. 모든 사이트는 영국에 기반을두고 있으며 영국 소비를위한 데이터를 제공하므로 내재화 또는 영어 이외의 텍스트로 작성된 텍스트 처리와 관련된 문제가 없습니다.
누구든지이 문제를 지속적으로 해결할 수 있도록이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
해결 방법
기본적으로 str
사용을 중지하여 유니 코드에서 인코딩 된 텍스트 / 바이트로 변환합니다.
p.agent_info = u' '.join((agent_contact, agent_telno)).encode('utf-8').strip()
또는 완전히 유니 코드로 작동합니다.
참조 페이지 https://stackoverflow.com/questions/9942594
반응형
'파이썬' 카테고리의 다른 글
파이썬 Django 모델 관리자 objects.create 문서는 어디에 있습니까? (0) | 2020.09.16 |
---|---|
파이썬에서 float 목록을 바이트로 압축하는 가장 빠른 방법 (0) | 2020.09.16 |
파이썬 Python : 바이트에서 비트 추출 (0) | 2020.09.16 |
파이썬 정규식에서 시작과 끝을 어떻게 일치시킬 수 있습니까? (0) | 2020.09.16 |
파이썬 pip를 사용하여 한 번에 여러 Python 패키지를 설치하는 방법 (0) | 2020.09.16 |
댓글