包含列表中字符串的参数

时间:2017-06-12 22:52:32

标签: python loops boolean custom-lists

我有一个通过netmiko。(https://github.com/ktbyers/netmiko)函数传递的防火墙cli命令列表。

问题是某些字符串命令包含其他参数,例如 send_command_timing("显示系统信息,delay_factor = 1,max_loops = 150,strip_prompt = True,strip_command = True)

有没有办法可以将整个命令添加到包含参数的列表中?

list_a =[ "Do_Something","Do_Something|else","Do_Altogether_Something_Else |"]

        for command in list_a :
            matching = [s for s in list_a if "|" in s]
            if command == matching:
                query = connection.send_command_timing(matching,delay_factor=1, max_loops=150, strip_prompt=True,strip_command=True)
                print (query)

对不起,如果我的问题有点含糊不清。如果这更好,请告诉我

1 个答案:

答案 0 :(得分:3)

我不是百分之百确定你要做什么,但这是我最好的解决方案。从我从问题中收集到的内容(如果我错了,请纠正我),你有一个字符串列表,其中每个字符串都是一个命令,后跟命令的参数;即它们遵循以下格式:'command|arg0|arg1|arg2'。我认为这是因为你的问题是:

  

问题是某些字符串命令还包含其中的参数,这些参数由实际命令的竖线分隔。

现在,您还要说您要将参数与命令分开。给定input_string,这是一个可以为你做的功能。

def separate_args_and_command(input_string):
    command_and_args = input_string.split('|')
    return command_and_args[0], command_and_args[1:]

此函数返回一个包含您的命令的元组,后跟一个args列表。这是一个简单的例子:

>>> separate_args_and_command('my_command|my_arg0|my_arg1')
('my_command', ['my_arg0', 'my_arg1'])

以下是如何将此功能用于您的问题的示例:

list_a = ["command0|arg0", "command1","command2|arg0|arg1|arg2"]
for command_and_args in list_a:
    command, arguments = separate_args_and_command(command_and_args)

    # Now you have your command, and your arguments separated. If there are no
    # arguments, the arguments variable will be an empty list.