【问题标题】:decode a string to recognize french characters解码字符串以识别法语字符
【发布时间】:2018-05-22 15:41:10
【问题描述】:

如何解码字符串以识别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é”

【问题讨论】:

  • 嗯,该字符串不包含法语重音字符。它包含garbage。这个字符串最初是怎么变成这样的?
  • 您只是使用错误/未指定的编码打开文件。
  • open 调用中添加一个ecoding='utf-8' 命名参数,应该这样做。
  • 那你愿意接受我的回答吗?很高兴知道它解决了您的问题!

标签: python utf-8 decode python-3.6


【解决方案1】:

问题中的字符串包含的是 Unicode 字符串 Pneus été 的 UTF-8 表示形式。你可以这样尝试:

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 字符串。

【讨论】:

  • 事实上,我试图抓取一个网页,当我想抓取这句话“Pneus été”并打印时,我得到了这个“Pneus été”,为什么会这样跨度>
  • 请发布您如何阅读网络服务器的响应,就像这样编码争论的地方。
  • 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()################### 请检查上面的格式化代码
猜你喜欢
  • 1970-01-01
  • 2020-12-18
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 2015-12-16
  • 1970-01-01
相关资源
最近更新 更多