Создание шаблона регулярных выражений для извлечения чисел с плавающей точкой и целых чисел - PullRequest
0 голосов
/ 28 января 2019

У меня проблема с созданием функции распознавания образов для извлечения всех чисел из столбца фрейма данных и их печати. ​​

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

import re
import pandas as pd
data = ['1EA @ 3217.45;', 'ST - .63HR@165;', 'ST - .5HR@123;', 'ST - 1.08HR@165;', '1EA @ 3217.45;', 'ST - .85HR@165;', 'ST - .85HR@165;', '1EA @ 3217.45;', 'ST - .12HR@165;', 'OT - 1.12HR @ 165;', 'ST - .55HR@123;OT - 0.82HR @ 123;', 'ST - .5HR@165;', 'OT - 0.45HR @ 123;', 'ST - .6HR@123;', 'ST - 1.42HR@123;', '1EA @ 1500;', 'ST - .3HR@123;', 'ST - 1HR@111;OT - 0.25HR @ 111;']
Travel = pd.DataFrame(data, columns=['Rate Breakup Description'])

for a in Travel['Rate Breakup Description']:
    print(re.search('.(\d+)HR | (\d+)EA | (\d+)HR | (\d+)EA', a, re.I|re.M))

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

1 Ответ

0 голосов
/ 28 января 2019

Вы можете использовать

Travel['Result'] = Travel['Rate Breakup Description'].str.findall(r'\d*\.?\d+(?=HR|EA)').apply(', '.join)

Шаблон будет соответствовать

  • \d* - 0+ цифр
  • \.? - необязательно .
  • \d+ - 1+ цифр
  • (?=HR|EA) - с последующими HR или EA.

.str.findall вернет все совпаденияон находит во входной строке, и .apply(', '.join) объединит результаты с запятой + пробел.

Если в каждом входе ожидается одно совпадение, вы можете использовать альтернативное решение:

Travel['Result'] = Travel['Rate Breakup Description'].str.extract(r'(\d*\.?\d+)(?:HR|EA)', expand=False)

Здесь (\d*\.?\d+) - это группа захвата из-за круглых скобок, эта часть возвращается .str.extract, а (?:HR|EA) - это группа без захвата (так что она не возвращается), соответствующая либо HR, либоEA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...