2013-07-03 8 views
0

Я просматриваю курс алгоритмов на MIT OCW. В лекции упоминается, что мы должны быть осторожны при использовании re.findall, так как re может быть в целом алгоритмом экспоненциальной сложности. Является ли это проблемой при анализе больших файлов или наборов данных и есть ли альтернатива регулярным выражениям для эффективного извлечения шаблонов из данных?Эффективность касается re.findall на больших наборах данных

ответ

1

, что зависит от того, что вы хотите сделать.

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

in, я думаю, будет гораздо более эффективным, чем регулярные выражения, но не допускает подстановочные знаки, повторы и т. Д. Если шаблон, который вы ищете, находится на одной линии, вы можете искать по одной строке за раз , обрабатывая каждый (и вынимая его из памяти) перед следующей строкой. Если вы ищете начало строки или конца, они используют mystring.startswith() или mystring.endswith() - они более эффективны.

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

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

+0

Спасибо за информацию. – Nitin