2016-05-23 29 views
1

エスケープ文字を含む文字列を含むテキストをファイルに書き込む必要があります。エスケープ文字をファイルに書き込む

私の問題は、新しい行や表のような暗黙的な特殊文字は、テキストが印刷されるときにその動作を保持する必要があるということです。

ただし、特殊文字を含むテキストは単純なテキストとして印刷されます。

このテキストは、ランタイム時に来ていると、これらの文字がどこにあるか私は知らないので、私は\\を追加することはできません。

例:私は見つける必要が私のファイルで

header = """ 

newLineSymbol = '\n' 


newValueSeparator = '\t' 
""" 

newLineSymbol = '\n' 


newValueSeparator = '\t' 

ノー成功を収めて書くことバイナリとしてファイルを開こうとしました。

のrepr機能を使用してテキストを書くための最後の試みが、としてそれは私のテキストを印刷します:私は書くためにこれを使用

\n\nnewLineSymbol = '\n'\n\n\nnewValueSeparator = '\t'\n 

fopen = open('output', 'w') 
fopen.write(header) 
fopen.close() 
+0

なぜjsonを使用しないのですか? –

+0

これは静的なテキストであるため、ツールで何らかの部分が埋め込まれていますので、その部分とその手順しか使用できません。私は生成されたテキストのみをファイルに書き込むことができます。 – Hoper

+0

これはまさに「\ n」を「\\ n」で置き換えることができないのですか? 「ランタイム」の意味は? –

答えて

1

あなたが何をしたいのかされ不可能

this answerを参照してください。
答えを引用:あなたは= "\ n" はtestStrを入力した後

は特殊文字はすでに が解釈されています。したがって、次の行では、既に起こっているように、その の解釈を変更することはできません。これは の字句解析段階で行われているので、実際にコードが実行される前にも実際には が実行されます。文字列が変数に代入されているときは、 "\"と "n"という2つの文字がすでに消えています。新しい文字は です。要するに

文字列が宣言された後、複数行の文字列で'\n'と実際の<enter>違いはありません。

0

あなたは次のようにフォーマットし、一部の文字列を試みることができる:プレースホルダを使用して

header = """ 

    newLineSymbol = '%s%s' 


    newValueSeparator = '%s%s' 
    """ % ('\\', 'n', '\\','t') 

    fopen = open('output.txt', 'w') 
    fopen.write(header) 
    fopen.close() 

をこの例では動作しているようですが、私はそれが他の例で動作しますどれだけわかりません。うまくいけば、これはいくつかの他のアイデアを助けるでしょう。

+0

私は長いテキストを定義するために 'r'を使って解決しました。 * header = "" "..... \ n \ t" "*を書く代わりに、* header = r" "" ..... \ n \ t "" * – Hoper

関連する問題