Python-For循环不会用它替换每个字典键';s匹配值。。。只为最后一把钥匙和;字典中的值
因此,我有一些代码来制作一个模块,我需要帮助利用Python-For循环不会用它替换每个字典键';s匹配值。。。只为最后一把钥匙和;字典中的值,python,css,dictionary,for-loop,Python,Css,Dictionary,For Loop,因此,我有一些代码来制作一个模块,我需要帮助利用for循环中的.replace()。 问题是,当我在变量中循环,并使用.replace(k,v)时,我的代码只会用字典中匹配的最后一个值替换最后一个键。这将在输出中保留所有以前的关键点,而不替换为它们的匹配值。。。我需要用每一个值替换每一个键,它只需要执行dict中的最后一个键就可以了 variables = {'font1': 'Harlow Solid', 'grey': '#454545', 'font2': 'mistral'} styl
for
循环中的.replace()
。
问题是,当我在变量中循环,并使用.replace(k,v)
时,我的代码只会用字典中匹配的最后一个值替换最后一个键。这将在输出中保留所有以前的关键点,而不替换为它们的匹配值。。。我需要用每一个值替换每一个键,它只需要执行dict中的最后一个键就可以了
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
variables={'font1':'Harlow Solid','grey':'#454545','font2':'mistral'}
样式表='''/*派尔表*/
哈松{
字体:斜体70px字体1;
}
hashtwo{#向下滚动查看有问题的'for'循环
字体:粗体45px font2;#向下滚动查看相关的“for”循环
}
哈什三{
字体:斜体25px哈洛立体;
}
点样{
文本对齐:居中;
}
哈什博迪德{
背景:灰色;
}
'''
replace_num=len(variables.keys())#您在循环中一次又一次地覆盖内容
,而替换的源字符串(样式表
)没有更改。代码中存在逻辑错误。让我们分析一下你的代码
假设样式表
等于aabbcc
,变量
等于{“a”:1,“b”:2,“c”:3}
循环期间会发生什么
第一个循环:content=“aabbcc”。替换(“a”,1,3)
,因此content=“11bbcc”
第二个循环:content=“aabbcc”。替换(“b”,2,3)
,因此content=“aa22cc”
最后一个循环:content=“aabbcc”。替换(“c”,3,3)
,因此content=“aabb33”
那么你注意到关键点在哪里了吗
您应该在每次循环期间更新原始字符串
您可以按如下方式更改代码:
content = style_sheet
for k, v in variables.items():
content = content.replace(k, v, replace_num) #update original string
如果问题与保存到文件无关,请从代码中删除它。顺便说一句,内容在每次迭代后都会被覆盖…我想我会把它留给整个文件作为参考,但事后看来这是一个更好的主意。所以本质上,我只需要在最后中断它?不,这只是得到了第一个工作键。。。这是愚蠢的,显然它只会做一次迭代。。。我算出了,我相信我需要添加一个不等式,如果变量replace_num大于零,那么我需要添加一个不等式来运行循环,然后添加-=1,这样每次迭代的值都会下降一。。。将更新…你是一个圣人和学者我的朋友。。。非常感谢