csv utf-8编码不能正常工作

mbyulnm0  于 2023-03-27  发布在  其他
关注(0)|答案(1)|浏览(233)

我做了一个程序,以可视化的HTML报告。这并不复杂,我读CSV文件添加了一些样式(文本和表格)一些文本,并读取DF作为一个表。这是代码看起来像:

df = pd.read_csv("Średnie wyniki oceny użytkowości rozpłodowej loch dla rasy puławskiej.csv",sep=";")
html = f"""
<HTML lang="pl">
<head>
<title>some title</title>
</head>
<style type="text/css">
some style
</style>
<body>
some text
{df.to_html(index=False)}
some text
</body>
</html>
"""
with open('report','w',)as f:
    f.write(html)

问题是当我尝试pd.read_csv.当我尝试读取CSV我得到这个错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf3 in position 9: invalid continuation byte我尝试将read_csv中的编码更改为:ISO 8859-2但这给予我一个错误行f.写(HTML)错误看起来像这样:UnicodeEncodeError: 'charmap' codec can't encode character '\x8c' in position 1694: character maps to <undefined>我接下来的两个步骤是更改'with open()'中的编码,首先我将其更改为'utf-8'。这起作用,但我的文本出现故障,后来我将编码更改为'ISO 8859-2',但在这种情况下,表中的文本出现故障。请帮助我出主意了。

inb24sb2

inb24sb21#

首先,让我们确保您使用正确的编码阅读CSV文件。您可以尝试使用'utf-8'和'ISO-8859- 2'。在读取CSV文件时使用正确的编码至关重要;否则,您将以乱码文本结束。

import pandas as pd

# Try reading the CSV with different encodings, e.g., 'utf-8' or 'ISO-8859-2'.
csv_encoding = 'utf-8'
df = pd.read_csv('your_csv_file.csv', encoding=csv_encoding)

现在,在编写HTML报告时使用与CSV文件相同的编码:

HTML = f"""
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="{csv_encoding}">
<title>some title</title>
<style type="text/css">
some style
</style>
</head>
<body>
some text
{df.to_html(index=False)}
some text
</body>
</html>
"""

with open('report.html', 'w', encoding=csv_encoding) as f:
    f.write(HTML)

这段代码使用指定的编码(在本例中为“utf-8”)读取CSV文件,并使用相同的编码编写HTML报告。通过在整个代码中使用相同的编码,您应该可以避免遇到的错误。
如果仍然有问题,可以尝试将csv_encoding变量更改为“ISO-8859-2”或其他适合CSV数据的编码。

相关问题