0

我需要根据 html 表单输入创建一个 CSV。我有它的工作,但如果有人在其中一个字段中加上逗号,那么就会出现问题。由于预期的输入,这很可能发生。有没有办法在将输入字符串写入文件之前替换输入字符串中的逗号?

4

4 回答 4

2

使用 Python 创建 CSV 文件(包括自动处理这个逗号问题)的最佳方法是使用csv标准库模块。您可以通过创建一个 CSV writer 对象来使用它

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

writer.writerow然后您实际上可以使用or写入文件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 回答
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 回答
1

查看 cvs.writer 文档:

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

并将适当的 'quotechar' 传递给构造函数以支持正确的引用

或者您在生成 CSV 时替换应用程序中的相关字符(超出 csv 编写器的范围)。

于 2012-08-28T03:53:49.713 回答