у меня проблема, лучше всего продемонстрированная на этой веб-странице https://www.basketball-reference.com/draft/NBA_2018.html, которая для каждого document.charset закодирована в 'utf-8'. я использую следующий код
html = requests.get("https://www.basketball-reference.com/draft/NBA_2018.html", headers = {"User-Agent": "XY"}).content
df_list = pandas.read_html(html)
в этот момент df_list[0] правильно отображает в консоли имя третьего игрока как Дончич. ок, пока все хорошо, но я хочу вывести эту таблицу в файл csv, поэтому я и делаю
with open('C:/Users/Eric/br2.csv', 'a', encoding='utf-8') as f:
df_list[0].to_csv(f, header=True, encoding='utf-8')
который печатает имя как DonÄić. это также происходит, если я использую кодировку «utf-8-sig», открытие вообще не работает, если я использую кодировку «latin1» или не добавляю к ней кодировку. если я попытаюсь просто распечатать вместо использования .to_csv, я все равно получу DonÄić. если я использую request.get().text, в конечном итоге это будет DonÂi‡.
мой вопрос: я получил информацию, извлеченную и правильно отформатированную в Python, как ее правильно отформатировать в файле?
Спасибо!
отредактировано и добавлено: благодаря Милошу и Марку я обнаружил, что происходит что-то гораздо более странное, ха-ха. если я попытаюсь использовать Excel или Блокнот с кодировкой utf-8, они все равно не отобразят ее правильно, но я вижу ее правильно в Open Office с кодировкой utf-8. это не самое странное. самое странное то, что если я скопирую эту строку Луки Дончича в блокнот и сохраню ее как новый CSV, Excel и Блокнот покажут ее правильно при открытии с кодировкой utf-8. насколько я могу судить, что-то в функции Python to.csv просто создает странный CSV, что кажется невозможным, но обойти это невозможно, лол. в любом случае решение chitown88 намного проще, поэтому всем, кто будет искать позже, я рекомендую это!
🤔 А знаете ли вы, что...
С Python можно создавать кросс-платформенные приложения для Windows, macOS и Linux.
Попробуйте явно задать кодировку. Это должно решить вашу проблему. Это сработало для меня.
html = requests.get("https://www.basketball-reference.com/draft/NBA_2018.html", headers = {"User-Agent": "XY"}).content
# Add this line to your code
html.encoding = 'utf-8'