извлечение некоторых строк между двумя строками в переменной фрейма данных в Python - PullRequest
0 голосов
/ 22 февраля 2020

Я новичок в Python, у меня мало знаний, мне нужна помощь по проблеме, с которой я столкнулся. У меня есть фрейм данных, в котором есть переменная скажем 'item' в текстовом формате, мне нужно потянуть текст между две строки говорят «уведомить» и «соответственно», я попробовал описанный ниже метод, но получил пустой вывод

start = 'to notify'
end = 'accordingly'
data_1['match'] = data_1['Issue'].apply(lambda x: "".join(x for x in x.split() if re.search(('%s(.*)%s' % (start, end)),x)))

Я также попытался re.findall, но он запрашивает объекты типа строки или байта, я пытался скрыть переменная от объекта к строке, но это не происходит даже. Будет очень полезно, если кто-нибудь сможет мне помочь с этими проблемами ...

1 Ответ

0 голосов
/ 22 февраля 2020

У меня возникли некоторые проблемы при чтении вашего кода, но этот фрагмент должен делать то, что я понимаю (получить текст между начальной и конечной строками)

import pandas as pd
import re

start = 'to notify'
end = 'accordingly'

# I created an auxiliary function to better handle the errors
# when the patern start - text - end is not found
def extract_between(x, start, end):
    try:
        return re.match(pattern=r'.*{}(.*){}.*'.format(start, end), string=x).group(1)
    except AttributeError:
        return None

# This is just an example, if it does not work for your porpoise please share some data
df = pd.DataFrame([('to notify TEXT accordingly'), ('this should not match')], columns=['issue'])
df['issue'] = df['issue'].apply(extract_between, **{'start': start, 'end': end})

print(df['issue'])
...