декодировать строку для распознавания французских символов - PullRequest
0 голосов
/ 22 мая 2018

как декодировать строку для распознавания французских символов в примере с 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 получить напечатано как этот «Пнеус», и я хотел быть таким «Пнеус»

1 Ответ

0 голосов
/ 22 мая 2018

То, что содержит ваша строка в вопросе, является представлением 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é' в виде строки Unicode.

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

...