最简单的python相当于R的gsub

时间:2016-08-04 17:01:56

标签: python r python-2.7

是否存在与R的gsub函数等效的简单/单行python?

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

2 个答案:

答案 0 :(得分:23)

对于一个字符串:

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]

答案 1 :(得分:4)

gsub是python中的常规sub-也就是说,默认情况下它会进行多次替换。

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'