Разница в скорости Python между регулярным выражением против нарезки? - PullRequest
0 голосов
/ 31 декабря 2018

Я не спрашиваю о том, как пересмотреть таблицу, но почему возникает разница в скорости

У меня был CSV-файл 10 ГБ, и я хотел найти конкретное значение, подобное этому.

originТаблица CSV.

id |значение |дата |num

1 | "12first" |"Пустышка Вэл + 18-10-20" |"92dummy"

to this.

id |значение |дата |num

1 | «первый» |"18-10-20" |92

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

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Слайсинг - простой метод: просмотрите данные, найдите разделитель, поместите все в список, продолжайте до конца.

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

Они могут быть очень неэффективными.Фактически некоторое время назад неудачное сочетание символов подстановки и большого количества пробелов вскоре поставило Stack Overflow на колени.

0 голосов
/ 31 декабря 2018

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

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

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