Python Subprozess führt Leerzeichen ein

8

Ich habe ein Python-Skript, das subprocess.Popen verwendet, um Windows * .exe-Dateien auszuführen. Alle EXEs außer einem erzeugen die erwartete Ausgabe. Wenn mit print () gedruckt wird, enthält die Ausgabe Leerzeichen zwischen jedem Zeichen der Ausgabe.

So sieht die Ausgabe beim Ausführen der EXE in der Windows-Befehlszeile aus:

%Vor%

So sieht es aus, wenn es in Python gedruckt wird:

%Vor%

Wir können den Whitespace deutlich sehen. Interessant ist, dass die ersten Zeilen die Leerzeichen nicht enthalten.

Dies ist der Code:

%Vor%

Woher kommen die Räume und wie entferne ich sie?

    
user3138929 11.01.2016, 20:29
quelle

1 Antwort

5

Windows-Ausgabeformat ist in UTF-16 codiert.

Sie müssen die Ausgabe dekodieren, um die Codierung mithilfe der Methode str.decode zu korrigieren. Anführungszeichen:

  

str.decode([encoding[, errors]])

     

Dekodiert die Zeichenfolge mit dem für die Codierung registrierten Codec. Codierung   Standardmäßig wird die Standardzeichenfolgencodierung verwendet. Fehler können gegeben werden, um a zu setzen   anderes Fehlerbehandlungsschema Der Standardwert ist 'strict', was bedeutet   Codierungsfehler verursachen UnicodeError. Andere mögliche Werte sind   'Ignorieren', 'Ersetzen' und einen anderen Namen, der über registriert wurde   codecs.register_error (), siehe Abschnitt Codec-Basisklassen.

%Vor%

Eine Tabelle mit Standardcodierungen finden Sie unter 7.8.3. Standard-Kodierungen .

Da Ihre Ausgabe gemischte Codierungen enthält [als "Leerzeichen" (die wirklich 0x00 Zeichen sind, nicht 0x20 ) existiert nur in Teilen der Ausgabe], möchten Sie vielleicht Ihre Zeichenfolge vorverarbeiten oder partitionieren, bevor Sie die Decodierung durchführen .

    
Łukasz Rogalski 11.01.2016, 20:45
quelle

Tags und Links