Удаление пустых элементов списка - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть список исходного кода, который просматривается для поиска подходящей строки и возвращает все совпадения в списке. Проблема в том, что я получаю пустой элемент списка каждый раз, когда совпадений не найдено.

Например: ["matchone", "", matchtwo "", .....]

Код выглядит так:

    name_match = re.compile("\s\w+\(")
    match_list = []
    match_list_reformat = []

   for x in range(0,30):
       if name_match.findall(source_code[x]) != None:
        match_list.append(gc_name_match.findall(source_code[x]))
        format = "".join([c for c in match_list[x] if c is not '(']).replace("(", "")
        match_list_reformat.append(format)

return match_list_reformat

Использование «if name_match.findall (source_code [x])! = None:» не меняет результат.

На заметку. Как я могу пройти через все строки исходного кода с этим определением? Диапазон (0,30) - это только обходной путь.

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

только одно небольшое изменение в последней строке вашего цикла for

match_list_reformat.append(format) if format != '' else False

, чтобы пройти все ваши изменения исходного кода range(30) на range(len(source_code))

0 голосов
/ 02 ноября 2018

Простейший без re, так как Python 3 возвращает итератор из фильтра, поэтому следует заключить в вызов list()

>>> mylst
['matchone', '', 'matchtwo', '', 'matchall', '']

>>> list(filter(None, mylst))
['matchone', 'matchtwo', 'matchall']

фильтр самый быстрый.

Из документов:

фильтр (функция, итеративная) Построить итератор из этих элементов итерируемый для которого функция возвращает истину. повторяемый может быть либо последовательность, контейнер, который поддерживает итерацию, или итератор. Если функция None, предполагается тождественная функция, то есть все ложные элементы итерируемого удаляются.

Обратите внимание, что фильтр (функция, повторяемая) эквивалентен генератору выражение (элемент для элемента в итерируемой функции if (item)) если функция не None и (элемент для элемента в итерируемом, если элемент), если функция Ни один.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...