0

csv の列を読み取る次のコードがあります。

# ------------------------------------------------------------------------------
# READS CSV, RETURNS LIST OF COLUMN DATA, FROM ROW rowStart TO rowFinish
# ------------------------------------------------------------------------------
def csvColumnAsList(csvFileName, column, rowStart, rowFinish):
    column_list = [] # defines it as a list
    with codecs.open(csvFileName, 'r', 'utf-8') as csvfile:
        spamreader = csv.reader(csvfile, delimiter=',')
        for row in itertools.islice(spamreader, rowStart, rowFinish+1):
            column_list.append(row[column].decode('utf8'))
    return column_list

しかし、これはエラーを引き起こします:

File "algo-8.py", line 51, in csvColumnAsList
    for row in itertools.islice(spamreader, rowStart, rowFinish+1): UnicodeEncodeError: 'ascii' codec can't encode character u'\u201c' in
position 215: ordinal not in range(128)

誰かが私を助けることができますか?エンコード、デコードでいくつか試してみましたが、まだわかりません。

4

1 に答える 1

1

モジュールのドキュメントの例のセクションを参照してください。そこには次のように記載されています(6番目のコードサンプルの下):

csv モジュールは、Unicode の読み取りと書き込みを直接サポートしていません [...] [しかし] NUL を使用する UTF-16 のようなエンコーディングを避ける限り、エンコーディングとデコーディングを処理する関数またはクラスを作成できます。UTF-8 を推奨します。

ページの最後に、すぐに使用できる実装があります。

于 2013-09-29T10:17:21.347 に答える