БЫСТРАЯ.ПРОВЕРКА:.ПРЕОБРАЗОВАНИЕ.СТРОК.В.ЧИСЛА Какая из следующих строк не будет преобразована в число и почему? int('a1')
int('12G', 16)
float("12345678901234567890")
int("12*2")
6.4.3. Удаление лишних пропусков
На удивление полезна тройка простых методов: strip , lstrip и rstrip . Метод strip возвращает новую строку, которая получается из исходной после удаления всех про-пусков в начале и в конце строки. Методы lstrip и rstrip работают аналогично, но они удаляют пропуски только в начале или в конце исходной строки соответственно: >>> x = " Hello, World\t\t "
>>> x.strip()
'Hello, World'
>>> x.lstrip()
'Hello, World\t\t '
>>> x.rstrip()
' Hello, World'
В этом примере символы табуляции относятся к пропускам. Точное значение этого термина может зависеть от операционной системы, но вы всегда можете узнать, какие символы Python относит к категории пропусков, обратившись к константе string. whitespace . В моей системе Windows Python возвращает следующий результат: >>> import string
>>> string.whitespace
' \t\n\r\x0b\x0c'
>>> " \t\n\r\v\f"
' \t\n\r\x0b\x0c'
Символы в шестнадцатеричном формате ( \xnn ) представляют символы верти-кальной табуляции и прогона страницы. Пробел означает сам себя. Возможно, вам захочется изменить значение этой переменной, чтобы повлиять на работу strip и других методов, но делать этого не стоит. Нет никаких гарантий, что это приведет к желаемому результату.
Однако вы можете изменить состав символов, удаляемых strip , rstrip и lstrip , передавая константу с удаляемыми символами в дополнительном параметре: >>> x = "www.python.org"
>>> x.strip("w")
Отсекает все буквы w
'.python.org'
Обратите внимание: strip удаляет все символы, содержащиеся в дополнительном параметре, независимо от порядка их следования . Чаще всего эти функции используются для быстрой очистки только что прочитан-ных строк. Они особенно полезны при чтении строк из файлов (глава 13), потому что Python всегда читает всю строку, включая завершающий символ новой строки, если он существует. Когда вы переходите к обработке прочитанных данных, за-вершающий символ новой строки обычно не нужен. Метод rstrip позволяет легко избавиться от него.
БЫСТРАЯ.ПРОВЕРКА:.STRIP
Если строка x равна "(name, date),\n" , какой из следующих вызовов вернет строку "name, date" ?
x.rstrip("),")
x.strip("),\n")
x.strip("\n)(,")
6.4.4. Поиск в строках
Объекты строк предоставляют методы для выполнения простого поиска. Тем не менее, прежде чем описывать их, я хочу поговорить о другом модуле Python: re (этот модуль подробно рассматривается в главе 16). ДРУГОЙ СПОСОБ ПОИСКА В СТРОКАХ: МОДУЛЬ REМодуль re также позволяет выполнять поиск в строках, но делает это намного более гибко с использованием регулярных выражений . Вместо того чтобы искать одну конкретную под -строку, модуль re проводит поиск по шаблону — например, можно искать подстроки, состо -ящие только из цифр.
Почему я упоминаю об этом сейчас, хотя модуль re будет рассматриваться позднее? По моему опыту, базовые средства поиска часто используются неподходящим образом. Разработчику стоило бы воспользоваться более мощными средствами поиска, но он не знает об их существовании и даже не ищет чего-то лучшего. Возможно, вы работаете над первоочередным проектом, в ко -тором используются строки, и у вас нет времени читать всю книгу. Если базовые средства поиска решают вашу проблему — отлично. Но знайте, что существует и более мощная альтернатива. Существуют четыре базовых метода поиска в строках: fnd , rfnd , index и rindex . Сопутствующий метод count подсчитывает, сколько раз подстрока встречается в другой строке. Я подробно опишу метод fnd , а затем объясню, чем другие методы отличаются от него.
Метод fnd получает один обязательный аргумент: искомую подстроку. Он возвра-щает позицию первого символа в первом вхождении подстроки в строке или –1 , если подстрока не встречается в строке:
>>> x = "Mississippi"
>>> x.find("ss")
>>> x.find("zz")
-1
Метод fnd также может получать один или два дополнительных необязательных аргумента. Первый аргумент start (если он присутствует) определяет начальную позицию поиска; он заставляет fnd игнорировать все символы, предшествующие позиции start , при поиске подстроки . Второй необязательный аргумент end (если он присутствует) определяет конечную позицию поиска; все символы в позиции end строки и после нее игнорируются:
>>> x = "Mississippi"
>>> x.find("ss", 3)
5
>>> x.find("ss", 0, 3)
-1
Метод rfnd очень похож на fnd , не считая того, что он начинает поиск от конца строки и возвращает позицию первого символа последнего вхождения подстроки в строке : >>> x = "Mississippi"
Читать дальше