4

現在、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

関数はアスキー文字で完全に機能しています。ただし、csv ファイルに ASCII 以外の文字が含まれている場合は、次のエラーが発生します: UnicodeDecodeError 'ascii' codec can't decode byte 0x93 in position 1526: ordinal not in range(128)

私の質問は、csv ファイルを保存する前に非 ASCII 文字を削除して、このエラーを回避するにはどうすればよいかということです。

前もって感謝します。

4

3 に答える 3

3

データから非ASCII文字を削除したい場合は、データを繰り返し処理し、ASCIIのみを保持してください。

for item in data:
     if ord(item) <= 128: # 1 - 128 is ascii
          [append,write,print,whatever]

Unicode 文字を ascii に変換したい場合は、DivinusVox による上記の応答が正確です。

于 2013-08-29T23:17:54.053 に答える
3

Pandas csv パーサー ( http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html ) は、さまざまなエンコーディングをサポートしています。

import pandas
data = pandas.read_csv(myfile, encoding='utf-8', quotechar='"', delimiter=',') 
于 2013-08-30T00:19:48.437 に答える