простейший питон, эквивалентный R gsub

Существует ли простой/однострочный питон, эквивалентный функции R gsub?

strings = c("Important text,      !Comment that could be removed", "Other String")
gsub("(,[ ]*!.*)$", "", strings) 
# [1] "Important text" "Other String"  

Ответы

Ответ 1

Для строки:

import re
string = "Important text,      !Comment that could be removed"
re.sub("(,[ ]*!.*)$", "", string)

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

import re
strings = ["Important text,      !Comment that could be removed", "Other String"]
[re.sub("(,[ ]*!.*)$", "", x) for x in strings]

Ответ 2

gsub - это обычная sub в python, то есть по умолчанию она выполняет несколько замен.

Подпись метода для re.sub - это sub(pattern, repl, string, count=0, flags=0)

Если вы хотите сделать одну замену, укажите count=1:

In [2]: re.sub('t', 's', 'butter', count=1)
Out[2]: 'buster'

re.I - флаг нечувствительности к регистру:

In [3]: re.sub('here', 'there', 'Here goes', flags=re.I)
Out[3]: 'there goes'

Вы можете передать функцию, которая принимает объект соответствия:

In [13]: re.sub('here', lambda m: m.group().upper(), 'Here goes', flags=re.I)
Out[13]: 'HERE goes'