Python没有返回variab指定的列表项

2024-05-13 01:59:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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

代码:

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

只是继续用第一个列表项替换文本中的键值,而不是递增。如果我手动删除x并将其设置为更高的整数,它将正确响应。同样,出于理智的考虑,打印x的过程证实了x正在增加。你知道吗

那么,为什么它要忽略x而保持0?你知道吗


Tags: 代码in文本脚本列表forrunsrange
1条回答
网友
1楼 · 发布于 2024-05-13 01:59:36

在代码中,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

现在您可以为每个键创建一个值列表,而不是相反, 由于您想用一个或多个值来更改每个关键字,所以只替换要更改的子字符串。使用find()可以得到实际字符串中子字符串的最低索引的位置。使用len()可以得到parametervalue的长度

相关问题 更多 >