Я столкнулся с проблемой в нижнем коде из-за специальных символов () в описании. Из-за этих специальных символов я получаю сообщение об ошибке.Как удалить специальные символы в python?
Ошибка: кодек 'ascii' не может декодировать байт 0x94 в позиции 821: порядковый номер не в диапазоне (128) Пожалуйста, помогите мне удалить эту ошибку.
данные в текстовой форме и данных в HTML форме приведены ниже соответственно
Ссылки: http://m.cellularoutfitter.com/p-85870-anycom-solar-bluetooth-car-kit_c.html (с Descripton в конце страницы)
Я пробовал различные методы и кодировки, но не удался.
Сначала я получаю полное src ссылки, а затем используя x path Я получаю описание в переменной. Я не могу опубликовать полный код по некоторым причинам. К сожалению код
Python:
parser = etree.HTMLParser(remove_blank_text=True, encoding="utf-8")
tree = etree.HTML(popup_html, parser)
description = tree.xpath("//span[@itemprop='description' and not(src)] ")
log.debug(str(description[0]))
for desc in description:
log.debug(etree.tostring(desc,encoding='UTF-8'))
if etree.tostring(desc,encoding='UTF-8').find("IFRAME") < 0:
reply_dict['product_desc'] = reply_dict['product_desc'] + etree.tostring(desc,encoding='UTF-8')
reply_dict['product_desc'] = reply_dict['product_desc'].replace(" \n", "").replace("\n", "<br/>").replace("img","").replace('< src="/productPics/altImgs/decal-skin-pdp-2.jpg"/>',"")
reply_dict['product_desc'] = reply_dict['product_desc'].replace("\xef\xbf\xbd","'")
reply_dict['product_desc'] = reply_dict['product_desc'].replace("\x92","'")
reply_dict['product_desc'] = "<br />".join(reply_dict['product_desc'].split("\n")).replace(" ", " ").encode('ascii', 'xmlcharrefreplace')
HTML код:
<div class="centerContain">
Convenient Bluetooth car kit easily mounts to vehicle windshield and features high-performance solar panel capable of converting UV rays into Bluetooth battery power. What's included: ANYCOM Solar Bluetooth Car Kit, window mount, suction cups, 12/24V vehicle power adapter w/USB cable, 3M adhesive tape, user guide.
<ul>
<li>Solar panel recharges battery, providing 30 minutes of talk time for every 3 hours of sun light</li><li>Features Digital Signal Processing (DSP) technology, including compression and echo cancellation</li><li>Easily pairs with compatible devices</li><li>Bluetooth: v2.0</li><li>Talk Time: 15 hours</li><li>Standby Time: 25 days</li><li>Operating Range: 33 ft. (10 meters)</li><li>Size: 3.59� (H) x 1.98� (W) x 0.52� (D)</li><li>Weight: 2.11 oz.</li><li>Warranty: ANYCOM limited worldwide 2-year warranty</li>
</ul>
</div>
в текстовой форме:
Удобный автомобильный комплект Bluetooth легко монтируется на лобовое стекло автомобиля и показывает высокоэффективную солнечную панель, способную преобразования ультрафиолетовых лучей в батарею Bluetooth. Что включено: ANYCOM Solar Bluetooth Car Kit, крепление для окна, присоски, адаптер питания автомобиля 12/24 Вт с USB-кабелем, клейкая лента 3M, руководство пользователя. Панель солнечных батарей перезаряжает аккумулятор, обеспечивая 30 минут разговора за каждые 3 часа солнечного света Особенности Технология цифровой обработки сигналов (DSP), включая сжатие и эхоподавление Легко соединяется с совместимыми устройствами Bluetooth: v2.0 Время разговора: 15 часов Время ожидания: 25 дней Рабочий диапазон: 33 фута (10 метров) Размер: 3,59 (H) x 1,98 (W) x 0,52 (D) Вес: 2,11 унции. Гарантия: ANYCOM ограничена во всем мире 2-летняя гарантия
Где ваш код? То, что вам нужно сделать, это либо пропустить символы, которые не соответствуют допустимому диапазону, либо перехватить исключение. –
Вставьте свой код здесь – curiousguy
страница имеет текст, закодированный в iso-8859-1, но в мета-заголовке указано, что это utf8, что делает браузер неспособным идентифицировать эти символы, если вы измените кодировку на iso-8859-1, будет способный преобразовать в unicode, что символ – markcial