2016-02-10 162 views
-1

我對Python有點新。這可能是一個簡單的問題,但不得不問。非常感謝。將變量追加到變量中

這是我在我的下面的代碼。

sysLst = str(raw_input('Enter pipe separated list of items [PRIMARY|PRIMARY-HA1|SECONDARY|SECONDARY-HA1|SCALE|ALL]: ')).upper().strip() 
nsysLst1="|".join(["^" + sysList_t + "$" for sysList_t in sysLst.split('|')]) 
nsysLst = nsysLst1.replace("^SCALE$", "PRIMARY-SCALE1|PRIMARY-SCALE2|AUXVM-SCALE1|AUXVM-SCALE2") 
print nsysLst 
if "ALL" in nsysLst: 
     nsysLst = "PRIMARY|PRIMARY-HA1|SECONDARY|SECONDARY-HA1|SCALE" 

當我運行上面的代碼,給輸入伯,我得到的結果爲:

Enter pipe separated list of items [PRIMARY|PRIMARY-HA1|SECONDARY|SECONDARY-HA1|SCALE|ALL]: PRIMARY 
^PRIMARY$ 

如果給輸入水垢,我得到的輸出:

Enter pipe separated list of items [PRIMARY|PRIMARY-HA1|SECONDARY|SECONDARY-HA1|SCALE|ALL]: SCALE 
PRIMARY-SCALE1|PRIMARY-SCALE2|AUXVM-SCALE1|AUXVM-SCALE2 

現在我的問題是當我給輸入'ALL'時,我怎麼能改變'SCALE '用'nsysLst'輸出選項。

截至目前,我得到下面的輸出,同時給予「全部」輸入:

Enter pipe separated list of items [PRIMARY|PRIMARY-HA1|SECONDARY|SECONDARY-HA1|SCALE|ALL]: ALL 
^ALL$ 

但我對「全部」輸入我的預期輸出應該是:

Enter pipe separated list of items [PRIMARY|PRIMARY-HA1|SECONDARY|SECONDARY-HA1|SCALE|ALL]: ALL 
^PRIMARY$|^PRIMARY-HA1$|^SECONDARY$|^SECONDARY-HA1$|^PRIMARY-SCALE1$|^PRIMARY-SCALE2$|^AUXVM-SCALE1$|^AUXVM-SCALE2$ 

請讓我知道我怎麼能得到這個。

+0

這很不清楚你在這裏問什麼。你可以嘗試縮短問題的範圍:只包含最少的必要代碼(去除任何邏輯* * *就像你期望的那樣工作)? –

+0

另外,仔細看看您的操作順序。如果你將ALL作爲特殊情況處理,那麼你肯定希望在**之前做到這一點,然後再拆分並重新加入內容?並且在**之後進行更改**您已經打印了您的輸出,這完全沒有意義。 –

回答

0
sysLst = str(raw_input('Enter pipe separated list of items [PRIMARY|PRIMARY-HA1|SECONDARY|SECONDARY-HA1|SCALE|ALL]: ')).upper().strip() 
if "ALL" in sysLst: 
    nsysLst1 = "PRIMARY|PRIMARY-HA1|SECONDARY|SECONDARY-HA1|^SCALE$" 
    nsysLst = nsysLst1.replace("^SCALE$", "PRIMARY-SCALE1|PRIMARY-SCALE2|AUXVM-SCALE1|AUXVM-SCALE2") 
    output="|".join(["^" + sysList_t + "$" for sysList_t in nsysLst.split('|')]) 
else:  
    nsysLst1="|".join(["^" + sysList_t + "$" for sysList_t in sysLst.split('|')]) 
    output = nsysLst1.replace("^SCALE$", "PRIMARY-SCALE1|PRIMARY-SCALE2|AUXVM-SCALE1|AUXVM-SCALE2") 
print output 
+0

我想你會希望split-and-rejoin是無條件的,而不是在'else'子句中,因爲OP表示他們希望在每個單獨項目上都有'^'和'$'s在這種情況下(顯示在「預期輸出」部分)。 –

+0

@rdRahul謝謝Rahul在這裏,如果我給'全部'輸入我得到的輸出爲: '輸入管道分隔項目列表[主|次| HA1 |次|次| HA1 |全部]:全部 PRIMARY | PRIMARY-HA1 | SECONDARY | SECONDARY-HA1 | SCALE' 這裏您可以看到'SCALE'即將到來。但是我需要用代碼中'nsysLst'變量分配的字符串替換它。 – pankaj

+0

好的..我已經編輯了! – rdRahul