質問

DB(レコード全体)からデータを読み取り、.txtファイルに書き込むエクスポート機能があります。各フィールドは「;」で区切られた行に1レコードです。私が直面している問題は、一部のフィールドに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の使用を検討することもできます.."、"値に。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top