2016-05-23 13 views
1

Ich muss in eine Datei schreiben einige Text, der eine Zeichenfolge mit Escape-Zeichen enthält.Schreibe Escape-Zeichen in Datei

Mein Problem ist, dass implizites Sonderzeichen wie eine neue Zeile oder ein Tabulationseffekt ihr Verhalten halten müssen, wenn der Text gedruckt wird.

Aber der Text, der Sonderzeichen enthält, soll als einfacher Text gedruckt werden.

Ich kann ein \\ nicht hinzugefügt werden, da dieser Text zur Laufzeit Zeit kommt, und ich weiß nicht, wo diese Zeichen sind.

Ein Beispiel:

header = """ 

newLineSymbol = '\n' 


newValueSeparator = '\t' 
""" 

In meiner Datei muss ich finden:

newLineSymbol = '\n' 


newValueSeparator = '\t' 

Ich habe versucht, die Datei als binäre zu öffnen, ohne Erfolg zu schreiben.

Letzter Versuch, den Text mit repr Funktion zu schreiben, aber er druckt mein Text:

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

ich diese verwenden zu schreiben:

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

Warum verwenden Sie nicht json? –

+0

Da dies ein statischer Text ist, der von einem Werkzeug mit einem Teil gefüllt wird, kann ich ihn und seine Schritte nur verwenden. Ich kann den generierten Text nur aufnehmen und in eine Datei schreiben. – Hoper

+0

Ok, und genau warum kannst du '' \ n'' nicht durch '\\ n'ersetzen? Was bedeutet "Laufzeit"? –

Antwort

1

Was Sie tun möchten, ist unmöglich.

Aus dem Grund siehe this answer.
Zitiert die Antwort:

Nachdem Sie testStr = "\ n" die Sonderzeichen eingeben werden bereits interpretiert. Also in der nächsten Zeile können Sie ihre Interpretation nicht ändern, wie es schon passiert ist. Dies geschieht während der lexikalischen Analysephase , also sogar noch bevor der Code tatsächlich ausgeführt wird. Wenn die Zeichenfolge Ihrer Variablen zugewiesen wird, sind die beiden Zeichen "\" und "n" bereits verschwunden - es gibt nur ein Zeichen - das neue Zeilenzeichen.

Kurz gesagt, wenn die Zeichenfolge erklärt wurde, gibt es keinen Unterschied zwischen '\n' und einer tatsächlichen <enter> in dem mehrzeiligen String.

0

könnten Sie einige String Formatierung wie diese versuchen:

header = """ 

    newLineSymbol = '%s%s' 


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

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

die Platzhalter verwenden scheint in diesem Beispiel zu arbeiten, aber ich bin nicht sicher, wie gut es mit anderen Beispielen zu arbeiten. Hoffentlich hilft das aber bei einigen anderen Ideen.

+0

Ich löste mit 'r', um den langen Text zu definieren. Anstatt * header = "" "..... \ n \ t" "" * zu schreiben, habe ich * header = r "" "..... \ n \ t" "" * – Hoper

Verwandte Themen