Leetとは、アルファベットを似た形の数字や記号で置き換える表現。例えば、「Python」を「Py+h0n」とするなど。
Leet文字列変換のルール
アルファベット文字列を「a」→「@」、「i」→「1」、「o」→「0」、「t」→「+」のルールで置き換えて表示する。
方法1: str.translate()
を使う
複数の置換ルールを指定して変換する場合、str型のtranslate()
メソッドを利用する。
# coding: utf-8 text = 'Python Programming' m = {'a':'@', 'i':'1', 'o':'0', 't':'+'} t = text.translate(str.maketrans(m)) print(t) # => Py+h0n Pr0gr@mm1ng
置換元と置換先の連結した文字列を指定して次のような書き方もできます。
# coding: utf-8 text = 'Python Programming' t = text.translate(str.maketrans('aiot', '@10+')) print(t) # => Py+h0n Pr0gr@mm1ng
方法2: リスト内包を使って書く
str.translate()
を知っていれば一番良いですが、それ以外の書き方も可能です。map(function, iterable, ...)
を利用して、リスト要素に対して順に変換を適用します。dict型のget()
メソットは、第一引数で指定したkeyが存在しなかった場合に、第二引数の値を返します。
# coding: utf-8 text = 'Python Programming' m = {'a':'@', 'i':'1', 'o':'0', 't':'+'} t = ''.join(m.get(c, c) for c in text) print(t) # => Py+h0n Pr0gr@mm1ng
方法3: lambdaを使って書く
リスト内包とほとんど同じですが、lambdaを使って書くこともできます。
# coding: utf-8 text = 'Python Programming' m = {'a':'@', 'i':'1', 'o':'0', 't':'+'} t = ''.join(list(map(lambda c: m.get(c,c), text))) print(t) # => Py+h0n Pr0gr@mm1ng
Pythonの基礎学習
[PR]これらのプログラムはPythonの基本的な文法とライブラリで実装することができます。Pythonの基礎学習には下記のようなサイトの利用が有効です。