Python,用字母表中的字母替换数字

时间:2017-04-27 10:59:49

标签: python

将数字替换为与Python中的字母相似的字母是什么方法?

示例:

"Hell0 my name 1s J0hn" - > "Hello my name is John"

3 个答案:

答案 0 :(得分:3)

首先,您需要精确定义您认为与字符类似的数字映射,或者,如果您想以艰难的方式进行操作,请开发学习算法以找到相似之处,然后替换它们。计算机并不擅长理解抽象概念。

一旦有了映射,就可以轻松完成 -

input_string = "Hell0 my name 1s J0hn"
mapping = {'0': 'o'} #...
for key, value in mapping.items():
    input_string = input_string.replace(key, value)

答案 1 :(得分:3)

这需要str.translate()

>>> leettext = "Hell0 my name 1s J0hn"
>>> leettext.translate(str.maketrans({"0":"o", "1":"i"}))
'Hello my name is John'

请注意,这不会区分低位和高位字符,因为leetspeak中没有该信息。

当字典增长时,进行一些小测试translate可以更好地扩展,因为您使用其他replace()解决方案迭代每个映射的整个字符串。

答案 2 :(得分:1)

你应该使用replace,例如(在@Dmitry'之后编辑):

s = "Hell0 my name 1s J0hn"
r =  [[0,'o'], [1, 'i']]
for e in r:
    s = s.replace(str(e[0]),str(e[1]))
print s

输出:Hello my name is John

注意:它们可能是更有效的方式(没有for)