【问题标题】:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 15: invalid start byteUnicodeDecodeError:“utf-8”编解码器无法解码位置 15 中的字节 0x96:无效的起始字节
【发布时间】:2019-11-14 20:14:35
【问题描述】:
import csv
import pandas as pd
db = input("Enter the dataset name:")
table = db+".csv"
df = pd.read_csv(table)
df = df.sample(frac=1).reset_index(drop=True)
with open(table,'rb') as f:
    data = csv.reader(f)
    for row in data:
        rows = row
        break
print(rows)

我正在尝试从 csv 文件中读取所有列。

错误:UnicodeDecodeError:'utf-8'编解码器无法解码位置 15 中的字节 0x96:无效起始字节

【问题讨论】:

    标签: python-3.x pandas csv


    【解决方案1】:

    您需要检查csv 文件的编码。

    为此,您可以像这样使用print(f)

    with open('file_name.csv') as f:
        print(f)
    

    输出是这样的:

    <_io.TextIOWrapper name='file_name.csv' mode='r' encoding='utf8'>
    

    用这样的编码打开csv

    with open(fname, "rt", encoding="utf8") as f:
    

    如 cmets 中所述, 你的编码是cp1252

    所以,

    with open(fname, "rt", encoding="cp1252") as f:
        ...
    

    对于.read_csv

    df = pd.read_csv(table, encoding='cp1252')
    

    【讨论】:

    • 您好!感谢您的回复。它显示编码为 "cp1252"。然后我在打开csv时放置了encoding = 'cp1252',但是没有用。
    • @harshavardhan 像这样打开with open(fname, "rt", encoding="cp1252") as f: 如果它解决了你的问题,别忘了接受。
    • 它在代码的第 5 行抛出错误。 df = pd.read_csv(table) Traceback(最近一次调用最后一次):文件“stack.py”,第 5 行,在 df = pd.read_csv(table)
    • @harshavardhan 使用df = pd.read_csv(table, encoding='cp1252')
    • 谢谢!它正在工作。
    猜你喜欢
    • 2022-05-30
    • 2018-01-13
    • 2018-10-19
    • 1970-01-01
    • 2021-12-01
    • 2016-05-13
    • 2017-05-03
    • 2020-02-06
    • 2021-10-22
    相关资源
    最近更新 更多