1

英語とヒンディー語の両方の文字を含む csv ファイルを解析しようとしていますが、utf-16 を使用しています。正常に動作しますが、ヒンディー語の文字に当たるとすぐに失敗します。私はここで途方に暮れています。

コードはこちら -->

import csv
import codecs

csvReader = csv.reader(codecs.open('/home/kuberkaul/Downloads/csv.csv', 'rb', 'utf-16'))
for row in csvReader:
        print row

私が得るエラーはTracebackです(最新の呼び出しは最後です):

>  File "csvreader.py", line 8, in <module>
>     for row in csvReader: UnicodeEncodeError: 'ascii' codec can't encode characters in position 11-18: ordinal not in range(128)
> kuberkaul@ubuntu:~/Desktop$

これを解決するにはどうすればよいですか?

編集1:

私は解決策を試し、unicdoe csv リーダーを使用しましたが、エラーが発生しました:

UnicodeDecodeError: 'ascii' コーデックは位置 0 のバイト 0xff をデコードできません: 序数が範囲外です (128)

コードは次のとおりです。

import csv
import codecs, io


def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs):
    # csv.py doesn't do Unicode; encode temporarily as UTF-8:
    csv_reader = csv.reader(utf_8_encoder(unicode_csv_data),
                            dialect=dialect, **kwargs)
    for row in csv_reader:
        # decode UTF-8 back to Unicode, cell by cell:
        yield [unicode(cell, 'utf-8') for cell in row]

def utf_8_encoder(unicode_csv_data):
    for line in unicode_csv_data:
        yield line.encode('utf-8')

filename = '/home/kuberkaul/Downloads/csv.csv'
reader = unicode_csv_reader(codecs.open(filename))
  print reader
for rows in reader:
  print rows
4

1 に答える 1