웹 사이트에서 데이터를 긁어내어 파일에있는 데이터를 쓰려고했습니다. 시간의 90 % 이상, 유니 코드 오류가 발생하지 않지만 데이터에 "Burger King®, Hans Café"와 같은 문자가있는 경우 오류 처리가 인쇄되도록 파일에 기록하는 것이 좋지 않습니다. 그것은 더 이상 오류없이 화면에 표시됩니다.일부 문자 (상표 기호 등)는 파일에 쓸 수 없지만 화면에 인쇄 할 수 있습니다.
나는 encode 및 decode 기능과 다양한 인코딩을 시도했지만 아무 소용이 없습니다.
것은 내가 아래 작성한 현재 코드의 발췌를 찾아주세요 :import urllib2,sys
import re
import os
import urllib
import string
import time
from BeautifulSoup import BeautifulSoup,NavigableString, SoupStrainer
from string import maketrans
import codecs
f=codecs.open('alldetails7.txt', mode='w', encoding='utf-8', errors='replace')
...
soup5 = BeautifulSoup(html5)
enc_s5 = soup5.originalEncoding
for company in iter(soup5.findAll(height="20px")):
stream = ""
count_detail = 1
for tag in iter(company.findAll('td')):
if count_detail > 1:
stream = stream + tag.text.replace(u',',u';')
if count_detail < 4 :
stream=stream+","
count_detail = count_detail + 1
stream.strip()
try:
f.write(str(stnum)+","+br_name_addr+","+stream.decode(enc_s5)+os.linesep)
except:
print "Unicode error ->"+str(storenum)+","+branch_name_address+","+stream
...해야한다 유능한. 스트림에서'decode()'를 호출합니다. 즉,'stream'이'enc_s5'에서 인코딩 된 비 유니 코드 문자열이 될 것으로 예상합니다 .- 정말로 사실입니까? 어쩌면 이미 유니 코드입니까? –