Что это за значение, которое pandas возвращает из URL-адреса?

Я пытаюсь прочитать таблицу по URL-адресу с помощью pandas, но она возвращает какое-то странное значение для столбца символов:

# 3rd party apps use "pip install pandas lxml"
import pandas as pd

url = "https://docs.google.com/document/d/e/2PACX-1vRMx5YQlZNa3ra8dYYxmv-QIQ3YJe8tbI3kqcuC7lQiZm-CSEznKfN_HYNSpoXcZIV3Y_O3YoUB1ecq/pub"
c = pd.read_html(url)
print(c)

Выход:

[              0          1             2
 0  x-coordinate  Character  y-coordinate
 1             0        â             0
 2             0        â             1
 3             0        â             2
 4             1        â             1
 5             1        â             2
 6             2        â             1
 7             2        â             2
 8             3        â             2]

Когда я печатаю определенные символы, я получаю это:

>>> c[0][1][1]
'â\x96\x88'

Сначала я предположил, что это шестнадцатеричный номер символа, но когда я проверил его, то обнаружил, что это не так. Я не совсем уверен в значении символа â.

Это кодировка utf-8 для блочного символа с кодовой точкой U+2588. Это то же самое, что '\xe2\x96\x88'. См. здесь: utf8-chartable.de/… Попробуйте прочитать HTML с помощью c = pd.read_html(url, encoding='utf-8')

Mark 07.08.2024 03:46

Чтобы разобраться с кодировками: nedbatchelder.com/text/unipain.html и joelonsoftware.com/2003/10/08/…

Mark Tolonen 07.08.2024 04:32

Еще одна, хотя и очень техническая, ссылка, актуальная для Интернета, — это Спецификация HTML-кодирования . Особенно таблица, показывающая, какие метки кодировки используют какую пару кодировщик/декодер.

Andj 07.08.2024 05:56
read_html() использует используемый механизм синтаксического анализа для определения кодировки. В этом случае извлекаемый HTML-код содержит несколько ошибок интернационализации, в том числе не идентифицирует кодировку внутри документа. Парсер неправильно определяет кодировку, что может быть следствием других ошибок в HTML-документе. Параметр кодировки в read_html() позволяет вам его переопределить.
Andj 07.08.2024 07:26
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы можете указать параметр кодировки в read_html() для обработки специального символа.

Вы можете попробовать:

url = "https://docs.google.com/document/d/e/2PACX-1vRMx5YQlZNa3ra8dYYxmv-QIQ3YJe8tbI3kqcuC7lQiZm-CSEznKfN_HYNSpoXcZIV3Y_O3YoUB1ecq/pub"
c = pd.read_html(url, encoding='latin1')

Или

url = "https://docs.google.com/document/d/e/2PACX-1vRMx5YQlZNa3ra8dYYxmv-QIQ3YJe8tbI3kqcuC7lQiZm-CSEznKfN_HYNSpoXcZIV3Y_O3YoUB1ecq/pub"
c = pd.read_html(url, encoding='utf-8')

Было бы лучше использовать windows-1252, а не latin1 или iso-8859-1, поскольку метки кодировки в Python означают разные вещи, а не в спецификации кодировки HTML.

Andj 07.08.2024 05:38

Другие вопросы по теме