0

HTMLフォーム入力に基づいてCSVを作成する必要があります。私はそれを機能させていますが、誰かがフィールドの 1 つにカンマを入れると、問題が発生します。これは、予想される入力のために発生する可能性が非常に高いです。ファイルに書き込まれるに、入力文字列のコンマを置き換える方法はありますか?

4

4 に答える 4

2

コンマを置き換える必要はありませんcsv。モジュールが処理します。埋め込まれたコンマを含むフィールドを引用します。例えば:

import csv
data = [['field 1', 'field 2', 'wobble', 'a,b,c'],
        ['another field 1', 'more field 2', 'wibble', 'c,b,a']]

with open('test.csv', 'w') as f:
    w = csv.writer(f)
    w.writerows(data)


$ cat test.csv
field 1,field 2,wobble,"a,b,c"
another field 1,more field 2,wibble,"c,b,a"
于 2012-08-28T03:54:23.810 に答える
2

Python で CSV ファイルを作成する (このコンマの問題を自動的に処理することを含む) 最善の方法は、csv標準ライブラリ モジュールを使用することです。これを使用するには、CSV ライター オブジェクトを作成します。

import csv
writer = csv.writer(open(filename))

writer.writerow次に、またはを使用して実際にファイルに書き込むことができますwriter.writerows

ファイル内の列に名前を付けたい場合は、csv.DictWriter

于 2012-08-28T03:53:08.847 に答える
2

モジュールを使用csvすると、コンマが引用されます。

>>> import csv
>>> import sys
>>> csv.writer(sys.stdout).writerow(['field with comma ,, ..', '2nd field'])
"field with comma ,, ..",2nd field

読み返すには:

>>> from StringIO import StringIO
>>> next(csv.reader(StringIO('"field with comma ,, ..",2nd field')))
['field with comma ,, ..', '2nd field']
于 2012-08-28T03:53:18.527 に答える
1

cvs.writer のドキュメントを見てください:

http://docs.python.org/library/csv.html

適切な引用をサポートするために、適切な「quotechar」をコンストラクターに渡します

または、CSV の生成中にアプリケーション内の関連する文字を置き換えます (csv ライターの範囲外)。

于 2012-08-28T03:53:49.713 に答える