2012-03-05 4 views
0

私はPythonで文字列に印刷できない文字を配置する方法を探しています。正規表現のPythonとバイナリデータ

小さな背景情報:私は、コマンドプロンプトでSSHを介してparamikoを使って作業しています。しかし、paramikoはANSIターミナルエミュレーションのエスケープシーケンスを「解析する」/「扱う」ことはありません。だから彼らは私の出力に現れています。私はそれが欲しくないのです。ですから、私はこれらのエスケープシーケンスを取り除く必要があります。

これらの文字列/ただし、次のようにエンコードされているエスケープシーケンス:Esc[Line;ColumnH

そして、あなたが推測することができますように。文字列にesc-byte値を取得できません。これは、0x1bまたは27のようなものとして印刷されます。したがって役に立たない。

これを解決する方法を知っている人はいますか?前もって感謝します。

+0

は(リテラルに置き換えて)非ASCII文字をエスケープし、正規表現の魔法、非エスケープしますか?多くのアプリケーションで – Kos

+0

を使用している場合、環境変数TERM = dumbを設定すると、ANSIエスケープシーケンスを送信できなくなります。 –

+0

@PauloScardine悲しいことに、これはうまくいかないようです。 –

答えて

1

あなたは正規表現使用して、これらのエスケープシーケンスを抑えることができます。

str_with_ainsi_esc = '\x1b[10;10HSalut' 
print re.sub('\x1b\[\d+;\d+H','',str_with_ainsi_esc) 
+0

ああ、文字列にbyte-charsを入れる方法です。ありがとう。明日はもっと近づくだろう。 (ホームタイム現在) –

+1

私は、列と行の値の両方が次のようになっているので、 '\ x1b \ [\ d +; \ d + H''を' \ x1b \ [\ d *; \ d * H]オプションでVT100仕様に従います。 –

関連する問題