-1

小さなデコーダーを作ろうとしています。特殊文字の 例
に値を割り当てたい: 入力すると、次のように出力されます: 'a'"("
( = "a"
"(""a"

私が入力した場合"(%!)("

次のような各文字に相当するものを出力します。

LadyBa

私の言いたいことを理解していただければ幸いです。 ユニコードなどが必要であることは知っていますが、学習しようとしている
Pythonがあまり得意ではありません。 Windows python 3.3での作業

4

2 に答える 2

2

あなたが使用することができます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 内の文字を削除します。

于 2013-03-10T12:20:31.753 に答える
0

編集: 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
于 2013-03-10T12:16:33.960 に答える