Python - For循环不会用它的匹配值替换每个字典键...仅与字典中的最后一个键和值合作

标签 python css dictionary for-loop

所以我有一些代码来制作模块,我需要帮助利用其中包含 .replace()for 循环。 问题是,当我循环 variables 并使用 .replace(k, v) 时,我的代码只会将最后一个键替换为与字典中的最后一个值匹配的值。这使得输出中留下的所有先前的键都不会被替换为它们的匹配值...我需要将每个键替换为每个值,并且只有通过执行字典中的最后一个键才会符合要求

variables = {'font1': 'Harlow Solid', 'grey': '#454545', 'font2': 'mistral'}

style_sheet ='''/* Pyle Sheets */
hashone{
    font: Italic 70px font1;
}
hashtwo{                       # scroll down to see 'for' loop in question
    font: bold 45px font2;     # scroll down to see 'for' loop in question
}
hashthree{
    font: Italic 25px Harlow Solid;
}
dotsample{
    text-align: center;
}
hashbodyid{
    background: grey;
}
'''
replace_num = len(variables.keys()) # <--for loop/.replace(k, v) function
for k, v in variables.items():      # <--for loop/.replace(k, v) function
    content = style_sheet.replace(k, v, replace_num) # <--- here it is...

looped_content = str(content)
id_content = looped_content.replace("hash", "#")
clss_idContent = id_content.replace("dot", ".")
#------------
print(clss_idContent) # view output

最佳答案

您的代码中存在逻辑错误。让我们分析您的代码。

假设 style_sheet 等于 aabbcc,并且 variables 等于 {"a": 1, "b": 2, “c”:3}

循环期间会发生什么?

第一个循环:content = "aabbcc".replace("a", 1, 3),因此content = "11bbcc"

第二个循环:content = "aabbcc".replace("b", 2, 3),因此content = "aa22cc"

最后一个循环:content = "aabbcc".replace("c", 3, 3),所以content = "aabb33"

那么你注意到关键点在哪里了吗?

您也应该在每个循环期间更新原始字符串!

您可以更改代码,如下所示:

content = style_sheet
for k, v in variables.items():
    content = content.replace(k, v, replace_num)  #update original string

关于Python - For循环不会用它的匹配值替换每个字典键...仅与字典中的最后一个键和值合作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46678220/

相关文章:

python - 您可以继续在运行时错误后运行代码吗?

Python:创建由字符串组成的列表的高效语法

jQuery 通过 CSS 类查找 id

python - 合并 2 个字典中的值 (Python)

c# - 如何检查Dictionary是否已具有键“x”?

Python数学抽认卡程序

python - 从包中导入所有模块

javascript - Coin-Slider 无法正确显示按钮(Chrome 除外)

html - wordpress 导航(自己的主题)

python - 从 tkvar.get() 截断字典