декодировать строку для распознавания французских символов

как декодировать строку для распознавания французских символов в примере Python «Pneus été» должно быть похоже на «Pneus été»

Я пробовал это, но, похоже, это не работает

var ='Pneus été'
print(var.decode('utf-8'))

это мой исходный код:

from bs4 import BeautifulSoup
import os
import math
import requests 
import pandas as pd
import helpers
import os
if __name__== '__main__':
    soup = BeautifulSoup(open(os.getcwd()+"/Desktop/Pneus auto _ Michelin FR.html"), 'html.parser')
    tyre_category = soup.find_all('div', class_='tyre')
    for category in tyre_category:
        tyre_name = category.img['alt']
        tyre_season = category.find('span', class_='season-icon')['title']
        url_for_tyre_details = category.find('a', class_='tyre-detail')['href']

        print(tyre_name, tyre_season, url_for_tyre_details, sep=",")

ВЫВОД:

MICHELIN Primacy 4,Pneus été,https://www.michelin.fr/pneus/michelin-primacy-4
MICHELIN Pilot Sport 4,Pneus été,https://www.michelin.fr/pneus/michelin-pilot-sport-4
MICHELIN Pilot Sport 4 S,Pneus été,https://www.michelin.fr/pneus/michelin-pilot-sport-4-s
MICHELIN Pilot Sport Cup 2,Pneus été,https://www.michelin.fr/pneus/michelin-pilot-sport-cup-2
MICHELIN CrossClimate+,toutes saisons,https://www.michelin.fr/pneus/michelin-crossclimateplus
MICHELIN Alpin 6,Pneus Hiver,https://www.michelin.fr/pneus/michelin-alpin-6
MICHELIN Pilot Alpin 5,Pneus Hiver,https://www.michelin.fr/pneus/michelin-pilot-alpin-5
MICHELIN Pilot Alpin PA4,Pneus Hiver,https://www.michelin.fr/pneus/michelin-pilot-alpin-pa4

Обратите внимание, что переменная tyre_season печатается как "Pneus été", и я хотел, чтобы она была похожа на "Pneus été"


person AbdeAMNR    schedule 22.05.2018    source источник
comment
Эта строка не содержит символов с французским акцентом. Он содержит мусор. Как эта строка вообще стала такой?   -  person deceze♦    schedule 22.05.2018
comment
Возможный дубликат Python - определить кодировку и преобразовать в utf-8   -  person Giacomo Catenazzi    schedule 22.05.2018
comment
на самом деле, я пытался очистить веб-страницу, и когда я хотел взять это предложение Pneus été и распечатать его, я получил это Pneus été, и я хотел бы получить правильное предложение. @GiacomoCatenazziv   -  person AbdeAMNR    schedule 23.05.2018
comment
Вы просто открываете файл, используя неправильную/неуказанную кодировку.   -  person deceze♦    schedule 23.05.2018
comment
добавить именованный параметр ecoding='utf-8' к вызову open.   -  person Arminius    schedule 23.05.2018
comment
soup = BeautifulSoup(open(os.getcwd()+"/Desktop/Pneus auto _ Michelin FR.html", encoding='utf-8'), 'lxml') ‹br/› это работает для меня   -  person AbdeAMNR    schedule 23.05.2018
comment
Тогда вы хотите принять мой ответ? Приятно знать, что это решило вашу проблему!   -  person Arminius    schedule 24.05.2018


Ответы (1)


Ваша строка в вопросе содержит представление UTF-8 строки Unicode Pneus été. Вы можете попробовать это так:

s = 'Pneus été'
s.encode(encoding='utf-8')

В результате закодированные байты b'Pneus \xc3\xa9t\xc3\xa9'

Или наоборот: если взять байты и декодировать их как UTF-8:

s = b'Pneus \xC3\xA9t\xC3\xA9'
s.decode('utf-8')

Вы получаете: 'Pneus été' как строку юникода.

Итак, где-то в вашем коде вы прочитали строку юникода без надлежащего декодирования.

person Arminius    schedule 22.05.2018
comment
на самом деле, я пытался очистить веб-страницу, и когда я хотел взять это предложение Pneus été и распечатать его, я получаю этот Pneus été, почему это происходит - person AbdeAMNR; 23.05.2018
comment
Пожалуйста, напишите, как вы прочитали ответ от веб-сервера, например, это место, где кодировка спорится. - person Arminius; 23.05.2018
comment
if __name__== '__main__': soup = BeautifulSoup(open("C:/Users/usrname/Desktop/Pneus auto _ Michelin FR.html"), 'lxml') tyre_category = soup.find_all('div', class_='tyre') for category in tyre_category: tyre_name = category.img['alt'] tyre_season = category.find('span', class_='season-icon')['title'] url_for_tyre_details = category.find('a', class_='tyre-detail')['href'] print(tyre_name, tyre_season, url_for_tyre_details, sep=",") print()#################### проверьте отформатированный код выше - person AbdeAMNR; 23.05.2018