2016-08-03 13 views
8

Gibt es eine einfache/einzeilige Python entspricht R grepl Funktion?einfachste Python entspricht R's grepl

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

Antwort

14

können Sie verwenden Liste Verständnis:

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

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

Oder verwenden re Modul:

import re 

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

Oder mit Pandas (R Benutzer in dieser Bibliothek interessiert sein, mit einem Datenrahmen „ähnlich "Struktur":

import pandas as pd 

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

Die Wunder der Liste Verständnis! – OdeToMyFiddle

+0

Ich nehme an, die frühere Lösung würde nicht funktionieren für "String $", oder? (d. h., es ist nur Teilstring-Übereinstimmung) – MichaelChirico

+0

wahr Sie müssen das Regex-Modul in diesem Fall verwenden. –

2

Eine einzeilige äquivalent ist möglich, mit re:

import re 

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

Dies wird nicht Boolesche Werte geben, aber truthy Ergebnisse, die genauso gut sind.

2

Wenn Sie nicht über einen regulären Ausdruck benötigen, sondern testen nur für die Existenz eines susbtring in einem String:

["String" in x for x in strings]