2012-02-23 54 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))]