python - 如果字符串中的字符与哈希表匹配,则替换它们并向下循环

标签 python python-3.x

这就是我现在所处的位置:

CharList = []
text = "xxxxAAaaaSSSxxx"
PasswordSubHT = {"a":"@" , "A":"4" , "S":"5"}
for LETTER in text:
    CharList.append(LETTER)
for EL in CharList:
    if EL in PasswordSubHT:
        print(text.replace(EL,str(PasswordSubHT[EL])))

这就是我得到的:

xxxx44aaaSSSxxx
xxxx44aaaSSSxxx
xxxxAA@@@SSSxxx
xxxxAA@@@SSSxxx
xxxxAA@@@SSSxxx
xxxxAAaaa555xxx
xxxxAAaaa555xxx
xxxxAAaaa555xxx

这就是我想要得到的:

xxxx4AaaaSSSxxx
xxxx44aaaSSSxxx
xxxxAA@aaSSSxxx
xxxxAA@@aSSSxxx
xxxxAA@@@SSSxxx

我想逐个字符进行替换,这就是我将字符串通过管道传输到数组的原因。这是解决这个问题的正确方法吗?

最佳答案

Python 字符串 replace方法用字符串中的新字母替换该字母的所有实例。例如,在第一遍中,它会跳过所有字母直到 A,然后看到 A 在子列表中,并将字符串中 A 的所有实例替换为 4。然后它移动到下一个字符,此时该字符已变为 4代替。 Python 字符串是不可变的。所以你不能真正拿起它们并改变它们之间的字母。 您可以做的就是将此字符串转换为列表。 char_list = 列表(文本)。然后你可以迭代它并保留一个计数器。

for char in char_list:
   counter = counter + 1
   if char in PassSubList:
      char_list[counter] = PassSubList[char]
 return_list = ''.join(char_list)

关于python - 如果字符串中的字符与哈希表匹配,则替换它们并向下循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49390828/

相关文章:

python - 如何查看当前日期并转到下一个日期

python - 更新 Tkinter GUI

python 如何根据正则表达式拆分列表并对其进行排序

python - python 3.3 的 urllib.request 无法下载文件

python - 如何在Python中绘制y轴为 "total of y values corresponding to each x bin"、x轴为n个x的直方图?

python - 如果使用 unicode 字符,从数据库中选择问题

python - MySQLdb : all values set to NULL when filling a new column procedurally

python-3.x - 从 Excel 数据创建字典

python - 追加文件中的每一行

python - 排序数据以在 mplot3d 中绘图