小さなデコーダーを作ろうとしています。特殊文字の
例
に値を割り当てたい:
入力すると、次のように出力されます: 'a'
"("
( = "a"
"("
"a"
私が入力した場合"(%!)("
:
次のような各文字に相当するものを出力します。
LadyBa
私の言いたいことを理解していただければ幸いです。
ユニコードなどが必要であることは知っていますが、学習しようとしている
Pythonがあまり得意ではありません。
Windows python 3.3での作業
小さなデコーダーを作ろうとしています。特殊文字の
例
に値を割り当てたい:
入力すると、次のように出力されます: 'a'
"("
( = "a"
"("
"a"
私が入力した場合"(%!)("
:
次のような各文字に相当するものを出力します。
LadyBa
私の言いたいことを理解していただければ幸いです。
ユニコードなどが必要であることは知っていますが、学習しようとしている
Pythonがあまり得意ではありません。
Windows python 3.3での作業
あなたが使用することができますstr.translate
:
In [7]: trans = str.maketrans("(","a")
In [8]: "(bcd(".translate(trans)
Out[8]: 'abcda'
S.translate(table [,deletechars]) -> 文字列
文字列 S のコピーを返します。ここで、オプションの引数 deletechars で発生するすべての文字が削除され、残りの文字は指定された変換テーブルを介してマップされています。これは、長さが 256 の文字列または None でなければなりません。table 引数が None の場合、変換は適用されず、操作は単に deletechars 内の文字を削除します。
編集: Ashwini Chaudhary のおかげで、これは良いことです
>>> d = {'(': 'a'}
>>> "".join(d.get(x,x) for x in 'text with m(ny letters')
'text with many letters'
これはより長い解決策ですが、同等のことを行います:
それで、あなたは手紙を翻訳し、あなたが知らないことをそのままにしておきたいですか?
>>> d = {'(': 'a'}
>>> ''.join(map(lambda letter: d.get(letter, letter), 'text with m(ny letters'))
'text with many letters'
説明
これ
d.get(letter, letter)
d で文字を見つけようとし、存在しない場合は文字 (2 番目の文字) を返します
lambda letter: lalala
と同じです
def f(letter):
return lalala
f # return f
map(function, list)
これを行います:
[function(element) for element in list]
これはの短縮形です
l = []
for element in list:
l.append(function(element))
l # returns that list
''.join(list)
と同じです
string = ''
for element in list:
string += element
string # return string as result