小编kht*_*tad的帖子

熊猫read_csv中的编码错误

我正在尝试将CS​​V文件读入Pandas中的Dataframe.当我尝试这样做时,我收到以下错误:

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

这来自代码:

import pandas as pd

location = r"C:\Users\khtad\Documents\test.csv"

df = pd.read_csv(location, header=0, quotechar='"')
Run Code Online (Sandbox Code Playgroud)

这是在Windows 7企业Service Pack 1计算机上,它似乎适用于我创建的每个CSV文件.在这种特定情况下,位置55的二进制位是00101001,位置54是01110011,如果这很重要的话.

使用文本编辑器将文件保存为UTF-8似乎也没有帮助.同样,添加参数"encoding ='utf-8'也不起作用 - 它返回相同的错误.

导致此错误的最可能原因是什么?除了暂时放弃DataFrame构造并使用csv模块逐行读取CSV之外,还有其他解决方法吗?

csv utf-8 pandas

48
推荐指数
2
解决办法
11万
查看次数

Python3 csv编写器失败,退出错误"TypeError:'newline'是此函数的无效关键字参数

我正在做的事情:

我正在尝试将csv文件的格式从空格分隔为逗号分隔.

我做了什么:

我可以很好地摄取csv文件,并逐行将输出打印到控制台.该代码如下所示:

with open(txtpath, mode='r', newline='') as f:
    fReader = csv.reader(f)
        for rows in fReader:
            print(rows)
Run Code Online (Sandbox Code Playgroud)

这完全符合预期,并且检查输出确认行正确读取.

问题:

根据csv.writer上官方的Python3文档,"如果csvfile是一个文件对象,它应该用newline ='' 1打开." 我的代码看起来像这样:

with open(csvpath, 'w') as g:
        gWriter = csv.writer(g, newline='')
        gWriter.writerows(rows)
Run Code Online (Sandbox Code Playgroud)

总而言之,它看起来像这样:

with open(txtpath, mode='r', newline='') as f:
    fReader = csv.reader(f)
    for rows in fReader:
        print(rows)
        with open(csvpath, 'w') as g:
            gWriter = csv.writer(g, newline='')
            gWriter.writerows(rows)
Run Code Online (Sandbox Code Playgroud)

但是,当我使用Pycharm(选择Anacondas 3.4作为项目解释器)和使用python3 mycode.py从控制台运行代码时,两个结果都告诉我换行"是此函数的无效关键字参数"并引用第42行,是我的编写器对象实例化的地方.我通过调试器运行它,一旦我尝试创建编写器对象,它就会崩溃.如果我不添加换行参数,则会要求提供方言规范,因此也不起作用.

我确信有一些令我眼花缭乱的东西让我失踪,但我看不到它.

csv python-3.x

2
推荐指数
2
解决办法
1万
查看次数

标签 统计

csv ×2

pandas ×1

python-3.x ×1

utf-8 ×1