使用split()时出错

时间:2015-07-12 17:37:25

标签: python csv

我有一个文件质量很差的文件,如果我尝试用open('data.csv', 'r')打开它我会得到:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in 
    position 4681: character maps to <undefined>

所以我使用open('data.csv', 'rb')代替它,它工作正常。然后我尝试使用以下方法将所需信息传输到新文件,但没有成功:

with open('datacsv', 'rb') as file, open('new.csv', 'w') as newf:
    for f in file:
        newf.write(str(f.split(',')[0:5]))

如果我取消split()它会将数据写入新文件,但是如果我添加我用来提取前几列的分割,我会得到:

TypeError: 'str' does not support the buffer interface

我在这里尝试了TypeError: 'str' does not support the buffer interface中的建议,但没有一个有用。

我怎样才能防止TypeError上升?

1 个答案:

答案 0 :(得分:0)

您的文件无法使用默认编码进行解码。您应该了解文件的编码方式,然后将该编码作为命名参数传递给open。检查编码的一种简单方法是在一个体面的文本编辑器中打开文件,如Notepad ++,Sublime,BBEdit等。编辑器将尽合理努力检测编码。