我正在尝试做一个小型解码器。
我想将值分配给'a'
特殊字母"("
示例:( = "a"
如果我输入"("
它会打印它"a"
:
如果我输入"(%!)("
:
它为每个字符打印等效项,例如:
LadyBa
希望你明白我的意思!
我知道它需要 unicode 或类似的东西,但我不太擅长
我正在尝试学习的 python。
在 windows python 3.3 上工作
我正在尝试做一个小型解码器。
我想将值分配给'a'
特殊字母"("
示例:( = "a"
如果我输入"("
它会打印它"a"
:
如果我输入"(%!)("
:
它为每个字符打印等效项,例如:
LadyBa
希望你明白我的意思!
我知道它需要 unicode 或类似的东西,但我不太擅长
我正在尝试学习的 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 中的字母,如果不存在则返回字母(第二个字母)
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