Формат строки - французские акценты - PullRequest
0 голосов
/ 26 марта 2019

У меня проблема с очисткой некоторых строковых данных из Википедии.Вот мой код:

import scrapy
import json

class communes_spider(scrapy.Spider):
    name = "city"
    start_urls = ['https://fr.wikipedia.org/wiki/Liste_des_communes_de_Belgique_par_population']

    def parse(self, response):
        for city in response.css('table.wikitable td a::text').getall():
            if city == '2':
                pass
            elif city == '3':
                pass
            else:        
                yield {
                    'cities': city + ', BE'
                }

Проблема в том, что строки написаны на французском языке, а в некоторых городах есть "è" или "é".Когда я экспортирую их в файл json, экспортируется слово «Liège», например «Li \ u00e8ge».Как я могу превратить эти строки в французские буквы?

Ответы [ 2 ]

5 голосов
/ 26 марта 2019

Вам не нужно переводить их на французский. Они одно и то же. Вы можете проверить их в ipython следующим образом

In [1]: l2 = 'Liège'

In [2]: l2
Out[2]: 'Li\xc3\xa8ge'

In [3]: print(l2)
Liège
1 голос
/ 02 апреля 2019

Символ - это наименьший возможный компонент текста.«A», «B», «C» и т. Д. - это разные символы.Как и «'» и «Í».Символы являются абстракциями и различаются в зависимости от языка или контекста, о котором вы говорите.Стандарт Unicode описывает, как символы представлены кодовыми точками .Кодовая точка - это целочисленное значение, обычно обозначаемое в Базе 16. В стандарте кодовая точка записывается с использованием нотации U+12CA для обозначения символа со значением 0*12ca 4810 в десятичном виде).Стандарт Unicode содержит множество таблиц, в которых перечислены символы и соответствующие им кодовые точки.

In [14]: a='\xc3\xa8'

In [15]: b='è'

In [16]: if a==b:
   ....:     print(True)
   ....:     
True
...