6.1 Имайте предвид модула string

Понякога използването на модула re е изобщо ненужно. Ако търсите съвпадение с фиксиран символен низ, или един единствен клас от символи, и в същото време не използвате разните възможности на re като флага IGNORECASE, тогава пълната мощ на регулярните изрази е ненужна. Модулът string предлага няколко функции за извършване на операции с фиксирани символни низове, които обикновено са много-по бързи, понеже реализацията им представлява един малък цикъл на C, който е оптимизиран за тази задача, за разлика от голямата машина за регулярни изрази с общо предназначение.

Пример за това може да бъде заместването на един фиксиран символен низ с друг. Например, можете да заместите "word" с "deed". Като че ли re.sub() изглежда подходяща функция за тази цел, но обърнете внимание на string.replace(). Забележете, че string.replace() ще замести и "word" вътре в думите, превръщайки "swordfish" в "sdeedfish", но и наивният РИ word ще стори същото. (За да избегнете заместването в части от думи, образецът трябва да бъде \ bword\b, така че да изисква "word" да е заобиколен от граници на дума от двете страни. Това поставя задачата отвъд възможностите на модула string.)

Друга често срещана задача е изтриването на всяко срещане на даден единичен символ, или заместването му с друг единичен символ. Можете да осъществите това с нещо като re.sub('\n', ' ', S), но string.translate() е в състояние да извърши и двете задания, при това много по-бързо, отколкото изобщо някога ще успее каквъвто и да било регулярен израз.

Накратко, преди да се обърнете към модула re, проверете дали задачата ви може да се реши с по-бързия и по-прост модул string.