62
В языке Python удобно организована работа со строками. Во-первых, благодаря
тому, что он позволяет выбрать сразу из трех стратегий:
1. Использовать существующую библиотеку, поддерживающую
специфический язык. Этот вариант подходит для широко
распространенных языков, например, XML. Хорошая библиотека
обычно включается в себя API, позволяющий создавать и изменять
содержимое исходных документов.
2. Создать собственный парсер. Обычно эту стратегию выбирают, если
существуют какие-либо потребности, которые не могут
удовлетворить стандартные решения (низкая скорость обработки,
недостатки реализации, утечки памяти и т.д.) или язык не является
широко распространенным.
3. Использовать инструмент или библиотеку, позволяющую
генерировать парсер. Например, библиотека ANTLR позволяет
создавать парсеры для любого языка [26]. Этот вариант является
наиболее гибким и минимальным по времени, затраченном на
разработку инструмента.
Во-вторых, при обработке текста неизбежно происходит много выделений
памяти, ее переадресаций и так далее. За счет того, что Python является
динамическим языком программирования, про сложности с управлением памятью
можно забыть. В-третьих, в Python существуют генераторы, которые удобно
использовать на больших объемах информации. Генератор – это функция, которая
ведет себя как итератор, т.е. возвращает только один элемент в каждый момент
времени. Это позволяет повысить производительность при обработке обширной
исходной информации.
Следующим шагом стоит выбор инструмента для токенизации текста. Из
описанных выше стратегий для данной задачи больше всего подходит комбинация