2012-02-23 49 views
0

我有文件有问题的查询字符串用_在他们 - Python的

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不会给我超出字符串_的任何东西 - 而且我有点卡住了。

任何想法?

回答

2

如果你知道文件名(日期时间,下划线,编号,下划线的字母,圆点,GZ),然后使用此格式:

[d for d in DIRLIST if d.split('_')[1] == '16203'] 

其他命题(简单if '16203' in dir会让喜欢的文件名。201008162030_15201_NC_GZ通过太,这是不是你想要的

5
filtered = [dir for dir in DIRLIST if '16203' in dir] 
+1

好,但更好的是“16203”与_ – Fred 2012-02-23 09:47:15

+0

似乎做的工作就好了 - 谢谢你 – sambasam 2012-02-23 09:50:18

+2

@sambasam:如果你使用这种方法,你需要的!用'_16203_'改变''16203'',oth否则你会得到误报。 – 2012-02-23 09:56:37

1

不知道你的意思是“不给我任何东西超越_在字符串”

>>> '201008190000_15201_NC.GZ'.split('_') 
    ['201008190000', '15201', 'NC.GZ'] 

如果你需要的是一个简单的状态就像你说的,那么彼得的建议将做得很好,更好,任何你会尝试拆分。

0
import re 
[dir for dir in files if re.search("(_16203_)", ",".join(DIRLIST))]