На этом шаге мы рассмотрим способы решения этой задачи.
Вы хотите удалить ненужные символы, такие как пробелы в начале, в конце или в середине текстовой строки.
Метод strip() можно использовать для удаления символов в начале или конце строки. lstrip() и rstrip() выполняют удаление слева и справа соответственно. По умолчанию они удаляют пробельные символы, однако им можно передать и другие символы. Например:
>>> # Удаление пробельных символов >>> s = ' hello world \n' >>> s.strip() 'hello world' >>> s.lstrip() 'hello world \n' >>> s.rstrip() ' hello world' >>> # Удаление других символов >>> t = '-----hello=====' >>> t.lstrip('-') 'hello=====' >>> t.strip('-=') 'hello' >>>
Различные методы strip() часто используются при чтении и чистке данных для последующей обработки. Например, вы можете использовать их, чтобы избавиться от пробелов, удалить кавычки и т. д.
Обратите внимание, что это удаление символов нельзя применить к тексту в середине строки. Например:
>>> s = ' hello world \n' >>> s = s.strip() >>> s 'hello world' >>>
Если вам нужно что-то сделать с внутренним пробелом, вам нужно применить другой прием, такой как использование метода replace() или подстановка с использованием регулярного выражения. Например:
>>> s.replace(' ', '') 'helloworld' >>> import re >>> re.sub('\s+', '', s) 'helloworld' >>>
Часто вам нужно сочетать срезание символов с другими видами итерационной обработки, такими как чтение строк данных из файла. Если это так, то стоит
применить выражение-генератор: with open(filename) as f: lines = (line.strip() for line in f) for line in lines: . . . .
Здесь выражение lines = (line.strip() for line in f) работает как преобразователь данных. Это эффективно, потому что оно не читает данные из какого-либо временного списка. Оно просто создает итератор, где ко всем производимым строкам применена операция срезания символов.
Для более продвинутого срезания вам стоит обратиться к методу translate(). Детали вы найдете в следующем рецепте, где описана чистка строк.
На следующем шаге мы рассмотрим чистку строк.