我有一个小项目,需要使用字典将文本中的高频字符替换为'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