Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python strip()命令剥离太多_Python - Fatal编程技术网

Python strip()命令剥离太多

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,

我需要使用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,
        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]