0

重複の可能性:
python csv: 結果を csv ファイルに保存する
Python: タプル値の辞書を csv ファイルに書き込む方法は?

以前は、これを使用して結果を 1 行ずつテキスト ファイルに書き込んでいました。各行では、値はタブで区切られています。

fd_out.write("%s\t%d\t%d\t%s\n" % (obj["name"],obj["count"],obj["age"],obj["params"]["country"])

しかし、代わりにCSV出力をしたいのですが、どのようにコードを書くと思いますか? このように、または CSV をインポートして別の方法を使用する必要がありますか? 申し訳ありませんが、私はプログラミングのかなりの初心者です...

fd_out.write("%s,%d,%d,%s\n" % (obj["name"],obj["count"],obj["age"],obj["params"]["country"])
4

2 に答える 2

6

コードは基本的なデータに対しては機能するはずですが、データにコンマが含まれていると、場合によっては問題が発生する可能性があります。

このcsvモジュールは、同様の問題だけでなく、その問題にも対処します。使い方はとても簡単です。

writer = csv.writer(fd_out)
writer.writerows((obj["name"],obj["count"],obj["age"],obj["params"]["country"]))

writerows二重括弧に注意してください。イテラブルを除くため、タプルを渡します。さらに詳しい情報が必要な場合は、遠慮なくドキュメントを確認してください。

于 2012-07-09T14:10:06.947 に答える
1

「CSV」は標準ではありません。「CSV」は文字通り「コンマ区切りの値」を意味しますが、タブを区切り文字として使用することは、より一般的ではないにしても、コンマと同じくらい一般的です。ウィキペディアも参照してください: http://en.wikipedia.org/wiki/Comma-separated_values

区切り文字 (つまり、タブまたはコンマ) を含む CSV フィールドに対応するには、データを二重引用符で囲むのが一般的です。標準はありません。区切り文字を含むデータ フィールドのみが引用される場合があります。以下の例では、すべてのフィールドが引用符で囲まれています。

csv 組み込みライブラリを使用すると、出力 CSV ファイルの形式を好きなように簡単に変更できます。

import csv

objs = [{'name': 'knut', 'age': 74, 'count': 13},
        {'name': 'lydia', 'age': 14, 'count': 3}]

with open("/tmp/example.csv", "w") as outfile:
    ## Ordering of the fields in the CSV output
    headers = ['name', 'age', 'count']

    ## although "CSV" stands for "comma separated values", 
    ## it's quite common to use other delimiters i.e. TAB
    ## and still call it "CSV".
    writer = csv.writer(outfile, delimiter="\t", quotechar='"', quoting=csv.QUOTE_ALL)

    ## it's common in CSV to have the headers on the first line
    writer.writerow(headers)

    ## Write out the data
    for obj in objs:
        writer.writerow([obj[key] for key in headers])

この例は、Python での要約リスト操作も示しています ...[obj[key] for key in headers]は、「ヘッダー内のすべてのキーの obj[key] のリストを教えてください」という意味です。

于 2012-07-09T14:08:32.830 に答える