如何处理boto的输出
在使用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的字符串列表。