2010-08-25 487 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