Python: oktales Escape-Zeichen \ 033 aus einem Wörterbuchwert übersetzt stattdessen in eine print-Anweisung in ein UTF-8-Zeichen

9

Ich habe ein wenig mit der Farbausgabe in Terminal und Python 2.7.3 experimentiert. Die ANSI-Farbcodes werden immer einwandfrei im Terminal wiedergegeben, mit dieser kleinen Ausnahme, die ich noch keinen Präziser als diese Wörterbuchdefinition genau lokalisieren konnte.

Hier ist, was zu Verwirrung führt:

%Vor%

Die Ausgabe für PrettyPrinter:

%Vor%

Das scheint mir die richtige Übersetzung in hexadezimales Format zu sein. Trotz dieser Tatsache werden die Wörterbuchwerte nicht korrekt an die print-Anweisung übergeben. Weder der rohe noch der Unicode-String-Literal-Modifier (aus Verzweiflung) ändert irgendetwas. Ich muss etwas ziemlich Offensichtliches vermissen. Auf Terminals ohne UTF-8-Unterstützung wird das Unicode-Zeichen weggelassen.

Ich habe die Implementierungen für gesehen termcolor :

%Vor%

colorama :

%Vor%

Und ein paar andere. Analytisch vermeiden sie alle die Definition der gesamten Sequenz im Wörterbuch. Ich stimme zu, dass ein solcher Ansatz lexikalisch vernünftig ist. Tatsache ist jedoch, dass das Escape-Zeichen aus einem Dictionary-Wert nicht korrekt interpretiert wird, außer in einem Perl-Hash, C ++ vector ized map <string, string> oder C% struct (wenn es sich um eine Karte handelt) char *string .

Und das führt zu der Frage: Gibt es einen bestimmten Grund, nach dem Standard, wenn möglich, warum Wörterbuch (lassen Sie uns das überspielen :) Interpolation von einer einfachen Zeichenfolge abweicht?

Hier ist der feste Farbcode dict (Tab-Einrückung bei der Bearbeitung, SO scheint die Tab-Zeichen zum Lesen zu entfernen):

%Vor%     
Nicholas 21.07.2013, 10:19
quelle

1 Antwort

7

Ich habe Ihren Quellcode durchgegangen und ich denke, das Problem liegt bei der Farbdefinition im Wörterbuch.

Wenn Sie genau beobachten, ist Ihr Wörterbuchwert für eine Farbe etwas wie \ 033 [1,30m für weiße Farbe. Es sollte jedoch \ 033 [1; 30m sein. Beachten Sie, dass Sie anstelle von ; (Semikolon) ein , (Komma) Zeichen verwenden. Als Test habe ich eine Teilmenge des Farbwörterbuchs erstellt und diese Tests durchgeführt.

%Vor%

Hoffe, das hilft

    
Prahalad Deshpande 21.07.2013, 12:26
quelle