2

ユーザーのデータをサイトに一括アップロードするための非常に基本的な CSV ファイル アップロード モジュールがあります。crontab で実行される Python スクリプトを使用してバックエンドで CSV ファイルを処理し、一括アップロードの結果をユーザーにメールで送信します。このプロセスは操作上は正常に機能しますが、csv ファイルの形式に問題があります。

さまざまな形式の csv ファイルを受け入れる方法に関する優れたツールや基本的なルールはありますか? ユーザーのデータ列の順序が異なる、列ヘッダーの名前がわずかに異なる (電子メール列のタイトルを「電子メール」にしたいが、「プライマリ電子メール」、「電子メール アドレス」と表示される場合がある)、または追加データが欠落している可能性があります。列。非常に寛容でユーザーフレンドリーな CSV アップロード機能の良い例はありますか?

また、ユーザーに CSV データとしてエクスポートするように指示するにはどうすればよいですか? アドレス帳の情報をインポートしているため、このデータは Outlook、Thunderbird、その他のアドレス帳を持つソフトウェア パッケージから取得されることがよくあります。受け入れる必要がある他の一般的なデータ形式はありますか?

4

6 に答える 6

4

Python の組み込みの csv モジュールをチェックアウトします。率直に言って、最初の行の .replace() は同義語の問題をカバーする必要があり、 csv.DictReaderを使用している場合は、欠落している列を非常に簡単に処理できるはずです。

my_dict_reader = csv.DictReader(somecsvfile)
for row in my_dict_reader:
    SomeDBModel.address2=row.get('address2', None)

欠落しているフィールドに None 値を格納したいと仮定します。

于 2009-02-25T15:50:32.697 に答える
3

最初の行を強制的にヘッダーにし、ユーザーにヘッダーを次のページのフィールド名に一致させ、将来のダンプのためにそのマッピングを覚えておく必要があります。

私が CSV インポートを行うときはいつでも、データは実際には Excel スプレッドシートからのものです。pyexceleratorを使用して直接インポートすることで時間を節約できました.xls。My .csvor .xlscode は、{'field_name':'data', ...}モデル オブジェクトに割り当てることができる辞書を生成するジェネレータです。

住所データを扱っている場合は、vCardを受け入れる必要があります。

于 2009-02-25T15:54:06.040 に答える
1

Excelテーブルをクリップボードにコピーしてから、結果をメモ帳に貼り付けると、タブで区切られていることがわかります。私はかつて、エディターからhtmlページのtextareaにデータをコピーして貼り付けることにより、ほとんどのテーブルエディターから一括インポートするために使用していました。

textareaの背景を列数のヒントとして使用し、ヘッダーを上部に配置して、ユーザーの順序を提案することができます。

Javascriptは貼り付けられたデータを処理し、簡単な事前検証ですぐにユーザーに表示するため、エラーの修正と再貼り付けが簡単になります。

次に、インポートボタンをクリックすると、データが再度検証され、インポート結果が表示されます。残念ながら、これが使いやすいかどうかについてのフィードバックは聞いたことがありません。

とにかく、私はまだバルクインポートを実装するときのオプションとしてそれを見ています。

于 2009-02-25T16:15:08.627 に答える
1

スクリプトがアップロードされたら、スクリプトでランダムな列ヘッダー マッピングを処理します。ユーザーが入力する可能性のあるものをすべて処理する「キャッチオール」を作成するのは困難です。ユーザーがアップロードしたものに基づいて、1 対 1 の関係のリストをゆっくりと作成していきます。

または!

列ヘッダーを確認し、適切にフォーマットされていることを確認し、そうでない場合は修正方法をアドバイスします。

「プライマリ メール」が認識されません。スキーマは「メール」、「住所」、「電話」などです。

XML を受け入れることもできます。これにより、準拠する必要がある独自のスキーマを作成できます。このチュートリアルをチェックしてください。

于 2009-02-25T15:50:13.740 に答える