0

csv ファイルを読み込もうとしています。

    with open(os.path.join(folder,mfile),'r') as csvfile:
        fileReads = csv.reader(csvfile, delimiter=',')

        for i, line in enumerate(fileReads):
            print 'line[{}] = {}'.format(i, line)

残念ながら、私のデータは CSV ファイルに次の形式で含まれています。

"val1, val2, val3"

(引用を含め、なぜそうなのかは聞かないでください...)

これにより、 csv.reader が行全体を 1 つの値として返すため、コンソールへの出力は次のようになります。

line[1] = ['val1,val2,val3']

予想通り。

  • この CSV ファイルを正しく読み取るにはどうすればよいですか?
4

1 に答える 1

3

ファイルをジェネレーター関数でラップして、引用符を取り除きます。

def strip_quotes(iterable):
    for line in iterable:
        yield line.rstrip('\n').strip('"') + '\n'

次に、その関数を次のように使用します。

fileReads = csv.reader(strip_quotes(csvfile), delimiter=',')

このcsv.reader()クラスは、ファイルだけでなく、反復可能なオブジェクトを問題なく受け入れます

このstrip_quotes()関数は、特定のファイルの内容に合わせて調整できます。列の周りにも引用符がある場合は、たとえば、行の最初と最後から引用符を1 つだけ削除できます。

于 2013-07-24T14:18:05.887 に答える