Присоединение к списку питонов через разделитель - PullRequest
1 голос
/ 06 ноября 2019

У меня есть список Python, скажем, например:

list = ['|','angela','demario','|','|','david','lucia','|','|','michael','jackson','|']

Я хочу, чтобы список вывода был:

output_list = ['angela demario', 'david lucia', 'michael jackson']

, так как я могу использовать разделитель '|'разделить, а затем присоединиться к списку и получить желаемый результат?

Ответы [ 2 ]

2 голосов
/ 06 ноября 2019

Присоединитесь к пустому пространству и затем разделите на вашем разделителе. Остальное - просто очистка, чтобы удалить пустые строки из вашего результата.

[*filter(None, map(str.strip, ' '.join(yourlist).split('|')))] 
# ['angela demario', 'david lucia', 'michael jackson']
1 голос
/ 06 ноября 2019

Вы можете написать себе небольшую функцию генератора:

lst = ['|','angela','demario','|','|','david','lucia','|','|','michael','jackson','|']

def make_list(iterable):
    stack, collect = [list(), False]
    for item in iterable:
        if item == "|" and not collect:
            collect = True
        elif item == "|" and collect:
            yield " ".join(stack)
            stack, collect = [list(), False]
        elif collect is not False:
            stack.append(item)

    if stack:
        yield " ".join(stack)


output_list = [item for item in make_list(lst)]
print(output_list)
# ['angela demario', 'david lucia', 'michael jackson']

Оставлять все остальное рядом, вызывать вашу переменную list - это всегда плохая идея.

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