我有一个文件列表
DIRLIST = ['201008190000_15201_NC.GZ', '201008190000_15202_NC.GZ',
'201008190000_16203_NC.GZ', '201008200000_15201_NC.GZ', '201008200000_15202_NC.GZ',
'201008200000_16203_NC.GZ',]
我想挑选出某些文件 - 比如两个文件中的16203。
我的第一个想法是在for循环中使用stringsplit,但stringsplit在字符串中不会给我任何超出_的东西 - 而且我有点卡住了。
有什么想法吗?
答案 0 :(得分:5)
filtered = [dir for dir in DIRLIST if '16203' in dir]
答案 1 :(得分:1)
不确定你的意思是'在字符串中没有给我任何东西
>>> '201008190000_15201_NC.GZ'.split('_')
['201008190000', '15201', 'NC.GZ']
如果您所需要的只是一个像您所说的简单条件,那么彼得的建议会做得很好,而且你会尝试拆分的任何事情都会更好。
答案 2 :(得分:1)
如果您知道文件名的格式(日期时间,下划线,内容,下划线,字母,点,GZ),请使用:
[d for d in DIRLIST if d.split('_')[1] == '16203']
另一个命题(简单if '16203' in dir
)也会让201008162030_15201_NC_GZ
这样的文件名也出现,这不是你想要的。
答案 3 :(得分:0)
import re
[dir for dir in files if re.search("(_16203_)", ",".join(DIRLIST))]