使用字符串替换字典中的字符串.Replace()只返回字符串的重复,不做任何更改



我有一个小项目,需要使用字典将文本中的高频字符替换为'e'、't'、'o'、'r'字符。

我试着用string.replace方法做这件事,但它只是复制文本,而不是用字典值实际更改字符。

在调试过程中,我实际上看到了它如何一次更改每个字符,但在下一次迭代时却"忘记"了它:

def replace_chars_in_text(str, dict):
dict = to_etor
my_str = lines_reader.lower()
for key, value in dict.items():
new_str = my_str.replace(key, value)
print(f"dictionary = {dict}, nstring = {my_str}, nfinal = {new_str}")
return new_str

这是因为行:

new_str = my_str.replace(key, value)

它保持原始初始化值。如果将其添加到for循环之上。它将使它具有迭代性,并保留您刚才使用的值。

new_str = my_str

并将for循环更改为迭代循环。

new_str = new_str.replace(key, value)

此外,不需要重新分配字典dict是一个不允许的变量名(除其他外(,因为它与预构建的类型兼用。只需使用to_etor

或全部:

my_str = lines_reader.lower()
new_str = my_str
for key, value in to_etor.items():
new_str = new_str.replace(key, value)
print(f"dictionary = {dict}, nstring = {my_str}, nfinal = 
{new_str}")
return new_str

最新更新