mylist = ['Arthur Morgan Game Name: Red Dead Redemption2',
'Zealda',
'Geralt Game Name:Witcher3','Uncharted4']
У меня есть список строк выше, и я хочу сначала разделить его на «Имя игры:» и сохранить только текст после разделителя. Я пробовал [w.split('Game Name: ') for w in mylist]
Какой следующий шаг?
Ожидаемые результаты:
['Red Dead Redemption2','Zealda','Witcher3','Uncharted4']
Спасибо!






[w.split('Game Name:')[-1] for w in mylist]
Редактировать В соответствии с Мартин Питерсpartition() быстрее, даже когда вам нужно проверить наличие пустых строк.
[w.partition('Game Name:')[-1] or w for w in mylist]
Вы не учитываете : в названии игры, а w.partition(':')[-1] было бы быстрее.
Спасибо за помощь@wilkben
@MartijnPieters Хотя раздел работает немного быстрее, он дает разные результаты для строк, не содержащих разделителя. Добавленная проверка, чтобы увидеть, существует ли разделитель, сведет на нет все преимущества производительности.
@wilkben: это зависит от того, что вы хотите, если это проблема. И проверка того, что раздел пуст (второй элемент), по-прежнему выполняется быстро.
Я создал заезд на время: stackoverflow.com/a/57064170. Спойлер: str.partition() побеждает по всем фронтам.
mylist = ['Arthur Morgan Game Name: Red Dead Redemption2',
'Zealda',
'Geralt Game Name:Witcher3','Uncharted4']
gameNames = [w.split(":")[-1].strip(" ") for w in mylist]
print(gameNames)
Возвращает:
['Red Dead Redemption2', 'Zealda', 'Witcher3', 'Uncharted4']
Вы не учитываете : в названии игры, а w.partition(':')[-1] было бы быстрее. А можно просто использовать .strip() без аргументов.
Вы полагаетесь на наличие в строке одного разделителя без учета двух или более. Пожалуйста, не разрабатывайте программное обеспечение для 737 Max.