在写入文件之前替换Python中的字符

时间:2012-08-28 03:46:39

标签: python string forms variables replace

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

4 个答案:

答案 0 :(得分:2)

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

创建CSV编写器对象来使用它
import csv
writer = csv.writer(open(filename))

然后,您可以使用writer.writerowwriter.writerows

实际写入文件

如果您希望命名文件中的列,可以使用csv.DictWriter

答案 1 :(得分: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']

答案 2 :(得分: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"

答案 3 :(得分:1)

查看cvs.writer文档:

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

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

或者在生成CSV时(在csv编写器范围之外)替换应用程序内的相关字符。