将数字替换为与Python中的字母相似的字母是什么方法?
示例:
"Hell0 my name 1s J0hn"
- > "Hello my name is John"
答案 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)