我有一個導出功能,它從DB(整個記錄)讀取數據並將它們寫入.txt文件,每行中的一個記錄由';'分隔。我面臨的問題是一些字段中包含CRLF,當我將它們寫入文件時,它會轉到下一行,從而破壞文件的結構。阻止CSV導出數據中的CRLF
唯一的解決方案是用自定義值替換CRLF,並在導入時用CRLF替換。但我不喜歡這個解決方案,因爲這些文件是巨大的,替換操作會降低性能....
您有任何其他想法嗎?
謝謝!
我有一個導出功能,它從DB(整個記錄)讀取數據並將它們寫入.txt文件,每行中的一個記錄由';'分隔。我面臨的問題是一些字段中包含CRLF,當我將它們寫入文件時,它會轉到下一行,從而破壞文件的結構。阻止CSV導出數據中的CRLF
唯一的解決方案是用自定義值替換CRLF,並在導入時用CRLF替換。但我不喜歡這個解決方案,因爲這些文件是巨大的,替換操作會降低性能....
您有任何其他想法嗎?
謝謝!
是的,使用引用字符串值的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']
如果你有過文件是如何出口和進口控制,那麼你可能想考慮使用XML ..也可以使用雙引號,我相信這些值可以指示像「,」這樣的文字。
好主意......謝謝! – GeoXYZ 2009-11-27 14:05:48