我有一个文件质量很差的文件,如果我尝试用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 :(得分:0)
您的文件无法使用默认编码进行解码。您应该了解文件的编码方式,然后将该编码作为命名参数传递给open
。检查编码的一种简单方法是在一个体面的文本编辑器中打开文件,如Notepad ++,Sublime,BBEdit等。编辑器将尽合理努力检测编码。