Возникли проблемы с запросом строк с _ в них - Python - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть список файлов

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 в них.

Моей первой мыслью было использование stringsplit в цикле for, но stringsplit не дает мне ничего, кроме _ в строках - и я немного застрял.

Есть идеи?

Ответы [ 4 ]

5 голосов
/ 23 февраля 2012
filtered = [dir for dir in DIRLIST if '16203' in dir]
1 голос
/ 23 февраля 2012

Если вам известен формат имен файлов (дата, время, подчеркивание, id, подчеркивание, буквы, точка, GZ), используйте это:

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

Другое предложение (с простымпропустите имена файлов, например 201008162030_15201_NC_GZ, что совсем не то, что вам нужно.

1 голос
/ 23 февраля 2012

Не уверен, что вы подразумеваете под "не дает мне ничего, кроме _ в строках"

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

Если все, что вам нужно, это простое условие, как вы сказали, тогда предложение Питера будет справедливымхорошо и лучше, чем все, что вы попробуете с split.

0 голосов
/ 23 февраля 2012
import re
[dir for dir in files if re.search("(_16203_)", ",".join(DIRLIST))]
...