Python strip()命令剥离太多
我需要使用strip获取AWS服务器的实例ID。我使用Python strip()命令剥离太多,python,Python,我需要使用strip获取AWS服务器的实例ID。我使用create\u instances()命令创建ec2服务器,该命令返回一个列表: instance = ec2_resource.create_instances( ImageId=image_id, MinCount=1, MaxCount=max_count, InstanceType=instance_type, KeyName=key_name,
create\u instances()
命令创建ec2服务器,该命令返回一个列表:
instance = ec2_resource.create_instances(
ImageId=image_id,
MinCount=1,
MaxCount=max_count,
InstanceType=instance_type,
KeyName=key_name,
SubnetId=subnet_id
print(instances)
给我这个:
[ec2.Instance(id='i-0ee74643266b26fca')]
我试图只使用实例ID(在引号之间)。我试着这样剥去它:
instance_id = str(instance).strip('[ec2.Instance(id=\'\')]')
print(f"Instance ID: {instance_id}")
然而,我得到的回报是:
Instance ID: -0ee74643266b26f
它去除了i-0ee74643266b26fca
开头的i
我无法在以后的调用中使用结果,因为它缺少
I
。如何正确执行此操作?strip
将is参数视为包含要删除的单个字符的iterable,而不是要删除的前缀/后缀。完全由参数中的字符组成的任何前缀或后缀
将被剥离,无论顺序如何
>>> "fofofofofo".strip("of")
""
使用正则表达式提取id,而不是去除周围的字符
或者,在Python 3.8之前
m = re.search("id='(.*)'", s)
if m is not None:
instance_id = m.group(1)
我会使用
split
而不是strip
"[ec2.Instance(id='i-0ee74643266b26fca')]".split("'")
#Makes a list
['[ec2.Instance(id=', 'i-0ee74643266b26fca', ')]']
"[ec2.Instance(id='i-0ee74643266b26fca')]".split("'")[1]
#Get the item at position [1] from the list
'i-0ee74643266b26fca'
你可以用它代替长条
instance_id = (str(instance).split('\''))[1]
注意-在字符串中使用“时,必须使用转义序列”
在split而不是split(“”)中,您必须使用split(“”)似乎您可以直接获得它,而无需转换为字符串
instance[0].instance_id
看
它似乎可以创建许多实例,因此您可能需要进行-loop以获取所有ID
for item in instance:
print(item.instance_id)
或
strip
将其参数视为要删除的字符的iterable,而不是单个前缀/后缀。确定。因此它删除了实例id开头的i
,因为它在instance\u id
中看到id
。对吗?我如何才能让它只删除实例id中的id
,而不删除I
“我需要使用strip获取AWS服务器的实例id。”我相信您需要获取AWS服务器的实例id,并且没有特别的原因必须使用strip
,除非这是对该要求的某种抽象挑战。使用Google“ec2\u resource.create\u instances get ID”
我发现您可以使用实例[0]。实例\u ID
或者甚至实例。实例\u ID
获得它,并且您不必将其转换为字符串。看看是否真的必须使用字符串,然后将其切分-即[18:-3]
提供您所需的-“[ec2.Instance(id='i-0ee74643266b26fca')]”[18:-3]
for item in instance:
print(item.instance_id)
all_ids = [item.instance_id for for item in instance]