2016-02-10 14 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" 

Когда я запускаю выше код и дать входные данные как PRIMARY, я получаю результат, как:

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 

Теперь мой вопрос, когда я даю ввод «ВСЕ», как я могу изменить «SCALE» 'с выходом' nsysLst '.

В настоящее время я получаю ниже выхода, давая «ALL» вход:

Enter pipe separated list of items [PRIMARY|PRIMARY-HA1|SECONDARY|SECONDARY-HA1|SCALE|ALL]: 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

Также внимательно ознакомьтесь с порядком операций. Если вы обрабатываете ВСЕ как особый случай, вы, конечно же, хотите сделать это ** перед **, тогда вы разделите и повторно присоединитесь к содержимому? И внесение изменений ** после того, как ** вы уже напечатали, ваш результат не имеет никакого смысла. –

ответ

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 говорит, что они хотят, чтобы' '' '' '' '' '' '' 'каждый * отдельный элемент в этом случае (показано в разделе «Предполагаемый выход»). –

+0

@rdRahul Спасибо Rahul здесь, если я даю вход «ALL», я получаю вывод как: 'Введите список отделенных друг от друга пунктов [ПЕРВИЧНЫЙ | ПЕРВИЧНЫЙ-HA1 | ВТОРИЧНЫЙ | SECONDARY-HA1 | SCALE | ALL]: все ПЕРВИЧНЫЙ | PRIMARY-HA1 | SECONDARY | SECONDARY-HA1 | SCALE' здесь вы можете увидеть, что «SCALE» подходит как есть. Но мне нужно заменить его строками, которые назначены в переменной «nsysLst» в вашем коде. – pankaj

+0

ok..и это отредактировал !! – rdRahul

Смежные вопросы