如何处理boto的输出

1 投票
2 回答
664 浏览
提问于 2025-04-18 02:42

在使用boto这个工具时,我得到的结果大多数都是以某种形式的列表呈现,而这些列表里的内容都是对象。

比如:

如果我执行:

def elb_subnets( availability_zone ):
        conn = boto.vpc.connect_to_region('us-west-2',aws_access_key_id,aws_secret_access_key)
        subnet_list = conn.get_all_subnets(filters={"availability-zone":<availability_zone>})
        return subnet_list;


subnet_list = elb_subnets("us-west-2a")

print subnet_list

[Subnet:subnet-8b9b31e0]

上面的内容是一个列表,里面的项是类型为Subnet的对象。

我遇到的问题是,我想去掉“Subnet:”这一部分,只保留subnet-8b9b31e0。

我尝试对这个列表进行字符串操作,但出现错误,提示Subnet对象没有字符串操作的模块。

那么我该怎么做呢?

这只是一个例子,我在使用boto的不同模块时也会遇到类似的问题。

2 个回答

0

你可以这样做,假设subnet_list里的字符串总是按照你展示的格式来写的。

subnet_list = ["Subnet:subnet-8b9b31e0","Subnet:subnet-1a1a1a1a", "Subnet:subnet-b2b2b2b2"]
strippedList = [i[7:] for i in subnet_list]

输出结果

['subnet-8b9b31e0', 'subnet-1a1a1a1a', 'subnet-b2b2b2b2']
1

子网对象有一个ID:

subnet_ids = [s.id for s in subnet_list]

这段代码会给你一个只包含子网ID的字符串列表。

撰写回答