1

FCC License Viewサンプルデータセットを解析するための概念実証として、次のコードを使用しています。

import csv

if __name__ == '__main__':
    csv_file = open('fcc-license-view-data-sample.csv', 'rb')
    dialect = csv.Sniffer().sniff(csv_file.read(1024))
    csv_file.seek(0)
    data = csv.DictReader(csv_file, dialect=dialect)
    for item in data:
        print item

モジュールがすべてのデータを出力した後、例外がスローされます。

File "C:\Python27\lib\csv.py", line 104, in next
row = self.reader.next()

_csv.Error:文字列内の改行

なぜこの例外が発生するのですか?どうすればそれを回避できますか?

4

2 に答える 2

2

その CSV ファイルのサンプルは、途中で切れているようです。一番最後は

 "2600 TOWER OAKS BOULEVARD","ROCKVILLE","MD","2085

閉じられていない引用符に注意してください。

サンプルのみを操作する場合は、最後の行を処理しないでください。私はこれがうまくいくと思います:

def all_but_last_line(file):
    last = next(file)
    for line in file:
        yield last

if __name__ == '__main__':
    with open('fcc-license-view-data-sample.csv', 'rb') as csv_file:
        dialect = csv.Sniffer().sniff(csv_file.read(1024))
        csv_file.seek(0)
        data = csv.DictReader(all_but_last_line(csv_file), dialect=dialect)
        for item in data:
            print item
于 2012-07-13T22:31:28.170 に答える
0

私は投稿します、確かにこれに対する非常に遅い答えですが、私は同じ問題を抱えていたので、トリックがあります

おそらく、csv ファイルのディレクトリをスキャンし、Python でそれらをダイジェストするためです。

アップロード中にファイルを取得しないという私のトリック:

inotifyシステムを使用して、閉じられているファイルを検査します。

または、cron のようなプロセスの場合は、「中間ルーム」を作成します: ftp directory > process directory および bash トリックを使用します:

source=directorySource
destination=directoryDestination
cd $source
for file in `find $source  -mtime +1  -print `
do 
    mv $file $destination$file
done
于 2013-10-03T08:40:23.823 に答える