阻止CSV导出数据中的CRLF

时间:2009-11-27 13:50:46

标签: csv newline

我有一个导出功能,可以从DB(整个记录)读取数据,并将它们写入.txt文件,一行记录,每个字段由';'分隔。我面临的问题是,某些字段中包含CRLF,当我将它们写入文件时,它会转到下一行,从而破坏文件的结构。

唯一的解决方案是使用自定义值替换CRLF,并在导入时替换为CRLF。但我不喜欢这个解决方案,因为这些文件很大,而替换操作会降低性能......

你还有其他想法吗?

谢谢你!

2 个答案:

答案 0 :(得分:1)

是的,使用引用字符串值的CSV生成器。例如,Python的csv模块。

例如(从csv docs翻录和修改):

import csv
def write(filename):
    spamWriter = csv.writer(open(filename, 'w'), quoting=csv.QUOTE_ALL)
    spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam\nbar'])

def read(filename):
    reader = csv.reader(open(filename, "rb"))
    for row in reader:
        print row

write('eggs.csv')
read('eggs.csv')

输出:

['Spam', 'Spam', 'Spam', 'Spam', 'Spam', 'Baked Beans']
['Spam', 'Lovely Spam', 'Wonderful Spam\r\nbar']

答案 1 :(得分:0)

如果您可以控制文件的导出和导入方式,那么您可能需要考虑使用XML ..您也可以使用双引号我相信在值中指示文字如“,”。