Удалить элемент, используя регулярное выражение из списка в python [duplicate]

1

У меня есть список в python

a=['one_foo','two_foo','bar_foo']

Ожидаемый результат:

['one','two','bar']

Я пробовал сделать первый конвертирующий список в строку, а затем с помощью regex

import re
re.sub("_.*$","", str(a))

Я знаю, что преобразование списка в строку является неправильным способом достижения этой задачи, может быть, есть какой-нибудь элегантный способ, не преобразовывая его в строку?

  • 0
    Вы привязаны к регулярному выражению или вы готовы рассмотреть другие решения?
  • 0
    NO. мы можем использовать и другие решения
Показать ещё 2 комментария
Теги:
string
list

1 ответ

2
Лучший ответ

Вы можете использовать понимание списка с помощью str.rsplit:

a = ['one_foo', 'two_foo', 'bar_foo']

res = [x.rsplit('_', 1)[0] for x in a]

['one', 'two', 'bar']

В общем случае решения регулярных выражений имеют тенденцию к ухудшению методов str для аналогичных операций.

  • 0
    Идеальное решение !, но как rsplit отличается от 'split'
  • 2
    split работает слева. rsplit работает справа. Аргумент 1 означает, что мы выполняем только одно разбиение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню