2010-08-25 41 views
1

我一直在寻找这个问题,但是我想就如何做具体的事情做一点小事情..我想concatenate一个字符串(我猜这将是一个字符串在这种情况下,因为它有一个变量和字符串),比如下面,我需要使用由一个字符串组成的变量来调用一个具有索引(来自另一个变量)的列表名。我简化了下面的代码,只是将相关部分显示为它的一部分宏将取代值:用作新变量名的Python,字符串(由变量和字符串组成,连接起来)?

toreplacetype = 'type' 
toreplace_indx = 5 
replacement_string = 'list'+toreplacetype[toreplace_indx] 

所以......我想使等于实际变量名在最后一行的字符串:

replacement_string = listtype[5] 

如何做到这一点的任何建议表示赞赏

编辑:

为了进一步解释,这是一个宏,是那种我在哪里指示在python脚本的事情,我想一个模板系统用特定的值替换,所以我使用正则表达式来做到这一点。所以,当我匹配一些东西时,我希望能够将它从列表中的特定值替换掉,但是,例如,在我有{{type}}的模板中,所以我提取了这个,但是然后我需要操作它如上所示,以便我可以使用提取的值“type”从列表内调用特定值(例如从名为“listtype”的列表中)(有多于1个列表,因此我需要找到名为“ listtype”所以我只是想作为上述串联得到这个的基础上,我使用正则表达式

+0

我想肯定低于伊格纳西奥的方法,这会是正确的:瓦尔= {“名单”:“名单” + toreplacetype}; replacement_string = vars ['list'] [5] ? – Rick 2010-08-25 02:58:31

回答

1

不建议提取的值。使用字典来代替。

vars['list%s' % toreplacetype][5] = ... 
+0

可否详细说明一下,我不清楚我可以如何使用它调用一个列表,比如名为“listtype”(带有索引5)的列表 – Rick 2010-08-25 02:27:42

+0

'vars = {}; vars ['listtype'] = []' – 2010-08-25 02:32:55

+0

我想我只是不跟随这是如何涉及到我的问题,我非常感谢你的帮助,虽然 – Rick 2010-08-25 02:36:57

0
replacement_string = 'list'+toreplacetype+'['+str(toreplace_indx)+']' 

将产生listtype [ 5]当y ou打印它。

您需要基本上将其分为5个部分:1个字符串变量,3个字符串和一个int转换为字符串。

我认为这是你问的问题?

+0

我应该提到更多关于这个我猜...(我将编辑上面解释更多)..我想这样:'list'+ toreplacetype [toreplace_indx]等于listtype [5]的变量名称 – Rick 2010-08-25 02:20:42

1

槽糕......

globals()['list%s'% toreplacetype][toreplace_indx] 
+0

好吧,似乎这些类型的东西继续为我回到globals()或locals(),所以我猜测在python中是做这种事情的方式,我将更深入地研究全局变量,然后学习它的来龙去脉 – Rick 2010-08-25 02:37:55

+0

'globals'只是返回全局范围内对象的字典。我建议使用Ignacio的方法,因为它避免了全局名称空间.. – 2010-08-25 02:42:09