0

我有一个文件列表

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 并没有给我任何超出字符串中的 _ 的东西 - 我有点卡住了。

有任何想法吗?

4

4 回答 4

5
filtered = [dir for dir in DIRLIST if '16203' in dir]
于 2012-02-23T09:40:50.867 回答
1

不知道你所说的“除了字符串中的 _ 之外没有给我任何东西”

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

如果您只需要像您说的那样简单的条件,那么彼得的建议就可以了,并且比您尝试拆分的任何方法都更好。

于 2012-02-23T09:49:24.407 回答
1

如果您知道文件名的格式(日期时间、下划线、id、下划线、字母、点、GZ),请使用以下命令:

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

另一个命题(简单的if '16203' in dir也会让文件名201008162030_15201_NC_GZ通过,这不是你想要的。

于 2012-02-23T09:53:01.817 回答
0
import re
[dir for dir in files if re.search("(_16203_)", ",".join(DIRLIST))]
于 2012-02-23T09:59:34.033 回答