2016-08-03 9 views
8

R'nin grepl işlevine eşdeğer basit/tek satırlık bir python var mı?R's grepl'e eşdeğer en basit python

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

cevap

14

Sen liste anlama kullanabilirsiniz:

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

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

Ya re modülü kullanmak: "Benzer bir dataframe kullanılarak

import re 

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

Ya Pandas (R kullanıcı ile, bu kütüphanede ilginizi çekebilir "yapı):

import pandas as pd 

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

harikalar! – OdeToMyFiddle

+0

Eski çözümü "String $" için işe yaramayacağım, değil mi? (yani sadece substring match) – MichaelChirico

+0

true Bu durumda regex modülünü kullanmanız gerekecektir. –

2

tek satırlık eşdeğer re kullanarak mümkündür: Bu, sadece iyi boolean değerleri, fakat truthy sonuçlar vermeyecektir

import re 

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

.

2

normal bir ifade gerekmez, ama sadece bir dizede bir susbtring varlığı için test ediyorsanız: Liste anlama

["String" in x for x in strings]