我有一个导出功能,可以从DB(整个记录)读取数据,并将它们写入.txt文件,一行记录,每个字段由';'分隔。我面临的问题是,某些字段中包含CRLF,当我将它们写入文件时,它会转到下一行,从而破坏文件的结构。
唯一的解决方案是使用自定义值替换CRLF,并在导入时替换为CRLF。但我不喜欢这个解决方案,因为这些文件很大,而替换操作会降低性能......
你还有其他想法吗?
谢谢你!答案 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 ..您也可以使用双引号我相信在值中指示文字如“,”。