Python 在findall之后获取特定值
我有下面的代码,它收集连接到计算机的设备列表,它返回UDID:然后是序列号,因此正确的返回如下所示 [UDID:340ad1234dfawd123,UDID:123ads345ads45112] 我目前的代码返回这些正确,但我需要它给我只是序列号,这样我可以循环从一个序列号到下一个,这样他们可以被测试一个接一个 我当前的代码如下所示:Python 在findall之后获取特定值,python,Python,我有下面的代码,它收集连接到计算机的设备列表,它返回UDID:然后是序列号,因此正确的返回如下所示 [UDID:340ad1234dfawd123,UDID:123ads345ads45112] 我目前的代码返回这些正确,但我需要它给我只是序列号,这样我可以循环从一个序列号到下一个,这样他们可以被测试一个接一个 我当前的代码如下所示: def list_devices(): out = subprocess.getoutput([GBTest, '--list-devices'])
def list_devices():
out = subprocess.getoutput([GBTest, '--list-devices'])
DEVICES = [out]
UDID = out.split(' : ')[-1]
#return UDID
items=re.findall("UDID: *.*",UDID,re.MULTILINE)
return items
我怎样才能添加一条线,使其只显示序列号,以便从一个序列号运行到下一个序列号
非常感谢您对新用户的帮助
下面是out的示例值
名称:SM-900 | UDID:1234ADAWD1231244ADAW
姓名:phone | UDID:7891263AJD092173好的,这里有两种方法: 首先,这是我的测试输入 下面是一个使用该输入列表的方法
def new_list_devices(devices):
serial_numbers = [] # init an empty list to store results
for entry in devices: # create a loop for each device listed
serial_numbers.append(entry.split(': ')[-1]) # append the split value
return serial_numbers # return it
你可以用它来测试
print(new_list_devices(input))
它为我输出:
['1234ADAWD1231244ADAW','7891263ajbd092173']
现在要改进:
def better_new_list_devices(devices):
return [entry.split(': ')[-1] for entry in devices]
print(better_new_list_devices(input))
这会产生相同的输出
更好的方法是使用列表理解来就地构建列表并直接返回
然后,您需要调整的唯一事情是确定如何将输入输入到方法中。你可以
def better_new_list_devices():
return [entry.split(': ')[-1] for entry in subprocess.getoutput([GBTest, '--list-devices']]
或者如果这太多了,就把它打破
def better_new_list_devices():
devices = subprocess.getoutput([GBTest, '--list-devices']
return [entry.split(': ')[-1] for entry in devices]
或者您甚至可以将输入列表作为参数传递,所以
def better_new_list_devices(devices):
return [entry.split(': ')[-1] for entry in devices]
打电话给
better_new_list_devices(subprocess.getoutput([GBTest, '--list-devices'])
可以肯定的是,您能否为out提供一个示例值。此外,序列号是第二个UDID值?请在OP中输入样本值并进行编辑,而不是作为注释。谢谢。添加了shawn提到的out示例。请提供out的示例值和正确的代码`这将帮助我们了解问题clearlyok,thx@user1304228。所以你给了我们两个有效的输入值。现在,请指出每一个的正确输出=+1表示TDD:返回值in out的类型是什么?是str吗?如果有多个条目,例如,SM-900和电话在一个返回中,它们之间的区别是什么?谢谢你,先生,把其中的零碎部分拿出来,得到了我想要的东西。请记住,1标准字符串方法非常强大,在使用re之前,您应该先使用它们-您得到了正确的拆分,但是您将列表放入另一个列表中,这导致2考虑代码中每个点的对象类型。我怀疑你得到的是一个列表,所以你不需要[out],这是一个列表的列表。祝你好运
better_new_list_devices(subprocess.getoutput([GBTest, '--list-devices'])