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

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

你还有其他想法吗?

谢谢你!

有帮助吗?

解决方案

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

例如(从 csv 文档):

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']

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top