функция grepl в python - PullRequest
0 голосов
/ 17 января 2020

Я хочу воссоздать код фрагмента от R до Python. У меня есть этот тиббл из R (датафрейм в Python), который как-то выглядит так:

column1       column2                                 column3
amsterdam     het dag calamiteit bij doen gratis dag  2013
rotterdam     blijdorp groet gratis burp het ik ben   2015

с этим кодом ниже, я пытался извлечь описание в виде односимвольной строки. Это код:

#R code
for (i in 1:nrow(tibble)) {
    des <- pull(tibble[i,2])
}

#Python code
for i in df:    
    des = df['column2'].str.split(expand=True).stack()

, и тогда серия des (мы получили из df ['column']) будет выглядеть следующим образом в python:

het
dag
calamiteit
bij
doen
gratis
dag
blijdorp
groet
burp
het
ik
ben

Но затем я хочу воссоздать этот код из R в Python, который я не знаю, как:

if (grepl("^\\s*$", des) == TRUE) { # if description is only whitespace then skip
    trns <- tibble(translatedText = "", detectedSourceLanguage = "", text = "")

, особенно функция grepl .

Чему оно равно в Python? и какой код Python лучше всего воссоздать? спасибо

Ответы [ 2 ]

0 голосов
/ 18 января 2020

Я получил идеальный вариант для воссоздания сценария R сверху. Это код Python:

 if [re.match(r'^\s*$', i) for i in des]:
        trns = i

, поэтому, если у меня есть ряд строк, подобных этой:

root
wit
geel

with
asd

goed
black
red

, то после того, как я выполню его с оператором if, я получу результат как это:

[None,
None,
None,
None,
None,
None,
<re.Match object; span=(0, 1), match=' '>,
None,
<re.Match object; span=(0, 0), match=''>,
<re.Match object; span=(0, 1), match=' '>]
0 голосов
/ 17 января 2020

Почти точным эквивалентом grepl является re.match. Посмотрите на этот небольшой пример:

import re
data = ["00het", "dags"]

matches = [re.match(r"\d{2}", str_) for str_ in data]

Хотя первая строка имеет совпадение, другая строка - Нет, так как в ней нет двух цифр. Я надеюсь, что это может быть хорошей отправной точкой для перевода вашего выражения с R на python

...