Ведущие пробелы были удалены, но RegEx вернул первоначальную проблему - PullRequest
2 голосов
/ 24 апреля 2019

snapshot2

Что я хочу:

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

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

Попытка 1

twt_clean.text.str.extract('((.(?=\d+)[0-9]*\.[0-9]+|[0-9]+)/([1-9][0-9]+))')

Это привело к появлению начальных пробелов перед числами с плавающей запятой

Попытка 2

twt_clean.text.str.extract('((?:[0-9]*\.[0-9]+|[0-9]+)/[1-9][0-9]+)')

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

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 24 апреля 2019

Попробуйте следующее регулярное выражение:

(\d+\.\d+|\d+)/([1-9]\d+)

Я отбросил самую внешнюю пару скобок, поэтому она содержит только:

  • (...) - нумераторная часть (группа захвата № 1).
  • / - представляет себя.
  • ([1-9]\d+) - часть знаменателя (группа захвата № 2).

Описание части нумератора:

  • \d+\.\d+ - Первый вариант: последовательность цифр, точка и другая последовательность цифр (десятичный вариант).
  • | - альтернативный разделитель.
  • \d+ - Второй вариант: последовательность цифр (целочисленный вариант).

Таким образом, любые начальные пробелы и начальная точка не фиксируются.

Рабочий пример (вариант регулярного выражения Python) см. https://regex101.com/r/ib7UsW/1

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

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