如何替换字符串中的某些字符?

时间:2016-11-27 17:41:19

标签: python string list

我对python(3.5.2)比较陌生,而且我很乐意帮助我完成列表中的任务。字符串。 我需要编写一个代码来代替:e和E代表3,a和A代表4,i和I代表1,o和O代表任何给定字符串。这是我的尝试:

s = input("Enter a string: ")

leet = {'a':'4','e':'3','i':'1','o':'0','A':'4','E':'3','I':'1','O':'0'}

for character in s:
    if character == leet.keys():
        str.replace(leet.keys(),leet.values())

print(s)

这段代码对我来说不会产生任何令人满意的结果,我想知道我是否可以使用str.replace方法或者有更简单的方法吗? 谢谢!

2 个答案:

答案 0 :(得分:3)

你可以使用str.join转换为字符串的生成器理解在一行中执行此操作(如果在字典中找不到,则使用dict.get默认为输入字符):

s = "a string Entered"

leet = {'a':'4','e':'3','i':'1','o':'0','A':'4','E':'3','I':'1','O':'0'}

crypted = "".join(leet.get(k,k) for k in s)

print(crypted)

结果:

4 str1ng 3nt3r3d

答案 1 :(得分:0)

replace()方法很好。但是你错了。请记住,leet.keys()将返回字典中所有键的列表。所以我建议:

s = input("Enter a string: ")

leet = {'a': '4', 'e': '3', 'i': '1', 'o': '0', 'A': '4', 'E': '3', 'I': '1', 'O': '0'}

for k, v in leet.items(): #iterating through dictionary (not string)
    s = s.replace(k, v)

print(s)