在查询带有_的字符串时遇到问题 - Python

时间:2012-02-23 09:39:13

标签: python string-split

我有一个文件列表

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 个答案:

答案 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))]