我有一个列表,其中包含了不同的软件,是建立在建设服务器列表。我只想要一个具体的。我已经为它编写了正则表达式,但是得到了空字符串。代码如下:
#!/usr/bin/env python
import re
lists = ['sw_apple-mc-stded-date.dat', 'sw_apple-mc-prod-date.dat', 'sw_android-mc-prod-date.dat', 'sw_android-mc-stded-date.dat']
regex = re.compile('sw_apple-mc-stded')
for list in lists:
firmware = regex.findall(list)
return firmware
我得到的是一个空的固件列表,而不是“sw\u apple-mc-stdeb”-日期.dat'. 先谢谢你。你知道吗
我不知道你为什么要用
regex = re.compile('sw_apple-mc-stdeb')
来检查你的列表项是否有匹配的字符串在代码中,执行以下操作:
return firmware如果与您的“regex”匹配,则返回上一次迭代的项目列表,因为只有1个项目与您的“regex”不匹配返回的列表为空。如果在代码中添加一个print,您将看到第一次迭代返回列表项,然后返回三个空列表
findall()
只返回字符串的匹配部分。更大的问题是,在每个循环迭代中都会覆盖firmware
,这就是为什么如果最后一个列表元素中没有匹配项,那么它最终是空的:但是,对于这个任务,我认为一个简单的contains检查就可以了:
相关问题 更多 >
编程相关推荐