BeautifulSoup заменяет одинарную кавычку (') на (â) при записи в CSV-файл - PullRequest
0 голосов
/ 21 сентября 2019

Я использую BeautifulSoup для сбора данных с веб-сайта, и исходный текст имеет вид - «Событие« Hello, World »», но когда я пытаюсь извлечь его с помощью html.parser и записать в файл CSV,становится "Привет, событие мира", я хочу, чтобы оно было записано в CSV в оригинальной форме.Ниже мой код -

page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, 'html.parser')
data = get_data(soup)
with open('The-Hindu-Dataset.csv', 'a', newline='', encoding="UTF-8") as csvfile:
    writer = csv.writer(csvfile, delimiter=',')
    writer.writerows(data)

1 Ответ

1 голос
/ 22 сентября 2019

Написано правильно.Ваш зритель использует неправильную кодировку.Установите эту программу в UTF-8 или попробуйте вместо этого encoding = 'utf-8-sig', esp.если вы на Windows.Это записывает подпись, которую редакторы, такие как Notepad и Excel, обнаруживают и автоматически декодируют как UTF-8.

Пример:

#coding:utf8
import csv

with open('test1.csv','w',encoding='utf8',newline='') as f:
    w = csv.writer(f)
    w.writerow(['The ‘Hello, World’ event','你好,世界!'])
    w.writerow(['The ‘Hello, World’ event','你好,世界!'])

with open('test2.csv','w',encoding='utf-8-sig',newline='') as f:
    w = csv.writer(f)
    w.writerow(['The ‘Hello, World’ event','你好,世界!'])
    w.writerow(['The ‘Hello, World’ event','你好,世界!'])

test1.csv:

Incorrect Excel display

test2.csv:

Correct Excel display

В остальном файлы кодируются идентично, за исключением подписи, намекающей на кодировку UTF-8.Windows примет локализованную кодировку по умолчанию (обычно Windows-1252) без нее.Даже мой инструмент сравнения в шестнадцатеричном формате предполагал, что Windows-1252:

Hex compare of files

Лучший редактор (например, Notepad ++ или более новые версии Notepad) будет отображать оба файла правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...