Python不按变量返回特定列表项

时间:2014-10-30 03:40:07

标签: python

我正在尝试创建一个python脚本,在每次迭代时从dict中的列表中选择下一个项目,并用当前项目替换文本中的键。但问题是,它不会返回与变量设置的整数匹配的列表项。

代码:

for x in range(0,runs):
    for k,v in shortcodes.iteritems():
        description = description.replace('{'+k+'}', v[x])
    print description

只需继续使用 first 列表项替换文本中的键值,而不是递增。如果我手动删除x并将其设置为更高的整数,则它会正确响应。同样,为了理智,打印x确认x正在增加。

那么,为什么它会忽略x并继续0

1 个答案:

答案 0 :(得分:1)

在您的代码中,for循环仅在第一次迭代时替换关键字。所有其他迭代都没有要替换的关键字,因为你已经用你的valueitem的第一个元素替换了它们。

我认为更有希望的解决方案是这样的

for k,v in shortcodes.iteritems():
    for x in v:
        index = description.find('{'+k+'}')
        description[index:index+len('{'+k+'}')] = description[index:index+len('{'+k+'}')].replace('{'+k+'}', x)
print description

现在你为每个键迭代你的价值主义者,而不是相反, 并且由于您希望使用anoter值更改每个关键字,因此您只需替换要更改的子字符串。使用find(),您将获得实际字符串中子字符串的最低索引的位置。并使用len()获得参数值的长度