-2

SO エキスパートから以下のコードを取得しましたが、ANSI 文字列で機能しており、入力はUNICODE STRINGです。このコードを両方のバージョンで機能させるにはどうすればよいですか? ティア

import csv
from collections import defaultdict
summary = defaultdict(list)
csvin = csv.reader(open('qwetry.txt'), delimiter='|')
for row in csvin:
    summary[(row[1].split()[0], row[2])].append(int(row[5]))
csvout = csv.writer(open('datacopy.out','wb'), delimiter='|')
for who, what in summary.iteritems():
    csvout.writerow( [' '.join(who), len(what), sum(what)] )

礼儀: ジョン・クレメンツ

4

1 に答える 1

0

csvモジュールは、Unicode の読み書きを直接サポートしていません。詳細はこちらをご覧ください。同じためのジェネレーターは次のとおりです::

 import csv

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')
于 2012-10-04T18:55:48.763 に答える