Функция регулярных выражений в python с разными спецификациями

#python-3.x #regex #data-extraction

#python-3.x #регулярное выражение #извлечение данных

Вопрос:

У меня есть столбец текстовых данных, которые я преобразую в строку с помощью функции ‘,’.join(). Данные приведены, как показано ниже. Я хочу извлечь только АД / артериальное давление / систолическое артериальное давление и соответствующие ему значения из преобразованной строки.

Я знаю, что должен использовать re.findall(). Но я не могу получить значения, поскольку существует несколько условий.

Я хочу, чтобы значения BP отмеченных строк изображений, показанных ниже. Изменение BP

Изменение в зависимости от артериального давления

Другой вариант BP

Я хочу, чтобы все эти варианты были извлечены с помощью функции регулярных выражений.

Код, который у меня есть на данный момент, получает только первый вариант. Я хочу расширить это дальше, чтобы получить все варианты.

 list_items =  file['Text'].tolist()

listToStr = ','.join([str(elem) for elem in list_items])


def get_BP(s):
    #s = s.lower()
    #print(s)
    #regex = r'(BP d /d )'
    regex = r'((?:BP|Blood Pressure) d /d )'
    try:
        return re.findall(regex,s)
    except:
        pass

x = get_BP(listToStr)
x

 

Результат, который я хочу, наконец, выглядит примерно так.

 ['BP 98/60', 'BP 108/60', 'BP 96/60', 'BP 120/75', 'Blood Pressure 106/63', 
 'B/P - Systolic 104','B/P - Diastolic 72','BP-Sitting 109/70 mmH',
 'BP: 101/72','Systolic Blood Pressure 100 mmHg','Diastolic Blood Pressure 68 mmHg']
 

Поскольку я новичок в функциях регулярных выражений, буду признателен за любую помощь.

Спасибо.

Комментарии:

1. Пожалуйста, отправьте код в виде обычного текста, а не снимков экрана.

2. Выполнено. Если это вам поможет. Спасибо

Ответ №1:

На основе списка с желаемыми результатами вы можете использовать чередование | , чтобы указать все варианты.

 b(?:BP:?(?:-Sitting)?|Blood Pressure) d /d (?: mmHg?)?|B/P - (?:Sys|Dias)tolic d |(?:Sys|Dias)tolic Blood Pressure d  w b
 

Демонстрация регулярных выражений

Комментарии:

1. Большое спасибо. Действительно спасла меня. Я ломал голову в течение 3 часов.

2. Последующий вопрос. Теперь что, если у нас есть такой пример — BP 128/80 128/81 128/82 128/83. Я хочу извлечь все 4 последовательных значения. Наряду со всеми другими условиями, приведенными выше.