2015-07-12 115 views
0

我的影片格式混乱的一个文件,如果我尝试用简单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上升?

+0

你使用的是什么版本的Python?你可以尝试python3,r,而不是rb。 – pvg

+0

这是python3,如果我没有'rb'文件将不会打开。 – Leb

+1

这是你的问题,而不是类型错误。你需要弄清楚文件的编码是什么,然后打开编码,就像open(filename,encoding =“utf8”)'一样。改为rb只是掩盖你的根本问题。 – pvg

回答

0

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

+0

我以为我尝试过''打开('datacsv','r',encoding ='utf8')',但我想我忽略了它。这解决了问题。 – Leb