С учетом основной направленности этой главы особенно полезными для анализа текста оказываются встроенные инструменты Python для разбиения и соединения строк по элементам:
str.split(delimiter?, maxsplits?)
Разбивает строку на список подстрок, по пробельным символам (табуляция, пробел, перевод строки) или по явно указанной строке-разделителю. Параметр maxsplits, если указан, ограничивает количество выполняемых разбиений.
delimiter.join(iterable)
Объединяет последовательность или итерируемый объект подстрок (например, список, кортеж, генератор), добавляя между ними строку-разделитель, относительно которой был выполнен вызов.
Эти два метода являются наиболее мощными среди строковых методов. Как мы видели в главе 2, метод split разбивает строку в список подстрок, а метод join соединяет их вместе:
>>> ‘A B C D’.split()
[‘A’, ‘B’, ‘C’, ‘D’]
>>> ‘A+B+C+D’.split(‘+’)
[‘A’, ‘B’, ‘C’, ‘D’]
>>> ‘—‘.join([‘a’, ‘b’, ‘c’])
‘a—b—c‘
Несмотря на свою простоту, они позволяют решать весьма сложные задачи обработки текста. Более того, строковые методы действуют очень быстро, потому что они реализованы на языке C. Например, чтобы быстро заменить в файле каждый символ табуляции четырьмя точками, достаточно просто передать этот файл на стандартный ввод следующего сценария:
from sys import *
stdout.write((‘.’ * 4).join(stdin.read().split(‘\t’)))
Метод split здесь разбивает входную строку по символам табуляции, а метод join объединяет полученные подстроки, вставляя точки там, где раньше были символы табуляции. В данном случае комбинация вызовов двух методов эквивалентна использованию более простого вызова строкового метода, выполняющего глобальную замену, как показано ниже:
stdout.write(stdin.read().replace(‘\t’, ‘.’ * 4))
Как будет показано в следующем разделе, операции разбиения строк вполне достаточно для решения многих задач обработки текста.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011