ホームページ > バックエンド開発 > Python チュートリアル > Python の文字列から ANSI エスケープ シーケンスを削除するにはどうすればよいですか?

Python の文字列から ANSI エスケープ シーケンスを削除するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-06 16:36:15
オリジナル
549 人が閲覧しました

How Can I Remove ANSI Escape Sequences from Strings in Python?

Python の文字列から ANSI エスケープ シーケンスを削除する

SSH コマンドから取得した文字列を操作する場合、ANSI エスケープ シーケンスが干渉する可能性があります。プログラムの動作。これらのエスケープ シーケンスを削除し、文字列から関連情報を抽出するには、Python の正規表現モジュールを使用して次の手法を使用できます。

正規表現メソッド

を使用できます。次の正規表現は、文字列から ANSI エスケープ シーケンスを識別して削除します:

import re

# 7-bit C1 ANSI sequences
ansi_escape = re.compile(r'\x1B(?:[@-Z\-_]|\[[0-?]*[ -/]*[@-~])')
result = ansi_escape.sub('', sometext)
ログイン後にコピー

この正規表現は両方を対象としています。 7 ビットおよび 8 ビットの C1 ANSI エスケープ シーケンス (コントロール シーケンス イントロデューサー (CSI) および選択グラフィック レンディション (SGR) コードを含む)。

次のことを考えてください。 ANSI エスケープ シーケンスを含む文字列:

'ls\r\n\x1b[00m\x1b[01;31mexamplefile.zip\x1b[00m\r\n\x1b[01;31m'
ログイン後にコピー

上記の正規表現を適用するエスケープ シーケンスが削除され、次のものが残ります。

ls\r\nexamplefile.zip\r\n
ログイン後にコピー

正規表現の説明

  • x1B: エスケープ文字 ( ESC).
  • [@-Z\-_]: 7 ビット C1 エスケープ シーケンスと一致します。
  • [[0-?]*[ -/]*[@-~]: CSI エスケープ シーケンスと一致します。
  • `?*: 0 個以上の次の文字列と一致します。前の要素。
  • .*: エスケープ シーケンスの後に来るすべての文字と一致します。

による一致これらのエスケープ シーケンスを削除すると、文字列から目的のテキストを効果的に抽出できます。

以上がPython の文字列から ANSI エスケープ シーケンスを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート