最简单的python相当于R的grepl

时间:2016-08-03 13:56:46

标签: python r python-2.7

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

strings = c("aString", "yetAnotherString", "evenAnotherOne") 
grepl(pattern = "String", x =  strings) #[1]  TRUE  TRUE FALSE

3 个答案:

答案 0 :(得分:22)

您可以使用列表理解:

strings = ["aString", "yetAnotherString", "evenAnotherOne"]

["String" in i for i in strings]
#Out[76]: [True, True, False]

或使用re模块:

import re

[bool(re.search("String", i)) for i in strings]
#Out[77]: [True, True, False]

或者使用Pandas(R用户可能对此库感兴趣,使用数据框“类似”结构):

import pandas as pd

pd.Series(strings).str.contains('String').tolist()
#Out[78]: [True, True, False]

答案 1 :(得分:2)

使用re

可以使用单行等效项
import re

strings = ['aString', 'yetAnotherString', 'evenAnotherOne']
[re.search('String', x) for x in strings]

这不会给你布尔值,但是结果同样好。

答案 2 :(得分:2)

如果你不需要正则表达式,而只是测试字符串中是否存在一个字符串:

["String" in x for x in strings]