删除csv文件中的非ascii字符

Njo*_*bau 4 python csv django converter

我目前正在使用csv文件在我的django模型中插入数据.下面是一个使用的简单保存功能:

def save(self):
myfile = file.csv
data = csv.reader(myfile, delimiter=',', quotechar='"')
i=0
for row in data:
    if i == 0:
        i = i + 1
        continue    #skipping the header row        

    b=MyModel()
    b.create_from_csv_row(row) # calls a method to save in models
Run Code Online (Sandbox Code Playgroud)

该功能与ascii字符完美配合.但是,如果csv文件有一些非ascii字符,则会引发错误:UnicodeDecodeError'ascii'编解码器无法解码位置1526中的字节0x93:序号不在范围内(128)

我的问题是:如何在保存我的csv文件之前删除非ascii字符以避免此错误.

提前致谢.

Div*_*Vox 6

如果你真的想剥掉它,试试:

import unicodedata

unicodedata.normalize('NFKD', title).encode('ascii','ignore')
Run Code Online (Sandbox Code Playgroud)

*警告这将修改您的数据* 它试图找到一个接近的匹配 - 即ć - > c

也许更好的答案是使用unicodecsv.

-----编辑-----好的,如果你不关心数据是否完全表示,请尝试以下方法:

# If row references a unicode string
b.create_from_csv_row(row.encode('ascii', 'ignore'))
Run Code Online (Sandbox Code Playgroud)

如果row是集合而不是unicode字符串,则需要将集合迭代到字符串级别以重新序列化它.