我遇到了一个问题,此网页最能说明问题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] 在控制台中正确显示第三顺位的名字为 Dončić。到目前为止还不错,但我想做的是将这个表输出到 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ä‡。如果我使用 requests.get().text 它最终会变成 Donàià‡。
我的问题是:我已经在 python 中提取了信息并正确格式化,如何在文件中正确格式化它?
谢谢!
尝试显式设置编码。这应该可以解决你的问题。这对我有用。
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'