Я искал решения для ошибки, которая у меня есть, но не нашел/не понял, что будет работать. По сути, если я использую строковые функции (перевод, удаление и т. д.), я получаю ошибки Unicode (кодек ascii не может кодировать символ «x» в позиции y: порядковый номер не в диапазоне (128). Но когда я пытаюсь Beautiful Soup для обработки текста я не получаю ошибок Unicode, но степень сложности (я должен сказать незнакомость) для меня довольно высока Вот выдержки из кода, который у меня есть:
...
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
trantab=string.maketrans(",",";")
...
html5 = urllib2.urlopen(address5).read()
time.sleep(1.5)
soup5 = BeautifulSoup(html5)
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 + string.translate(str(tag.text),trantab)
if count_detail < 4 :
stream=stream+","
count_detail = count_detail + 1
print str(storenum)+","+branch_name_address+","+ stream
....
Этот скрипт работает какое-то время, а затем бомбит stream = stream + string.translate(str(tag.text),trantab)
По сути, я просто пытаюсь заменить запятые точкой с запятой в полях, которые я обрабатываю.
Кроме того, пытался удалить встроенные пробелы/пробелы с помощью string.strip
, но я получаю аналогичные ошибки.
Как бы я сделал то же самое, используя красивый суп (вплоть до замены запятых точкой с запятой и удаления пробелов)?
Или есть код для решения этих надоедливых ошибок Unicode, если я просто придерживаюсь строковых функций?