与R的grepl等效的最简单的python

jtw3ybtb  于 2023-01-15  发布在  Python
关注(0)|答案(3)|浏览(105)

是否有一个简单的/单行的python等价于R的grepl函数?

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

7nbnzgx91#

你可以使用列表解析:

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用户可能对此库感兴趣,使用 Dataframe “相似”结构):

import pandas as pd

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

polhcujo2#

使用re可以得到一行等价语句:

import re

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

这不会给予你布尔值,但真实的结果一样好。

ldxq2e6h

ldxq2e6h3#

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

["String" in x for x in strings]

相关问题