Наоми Седер - Python. Экспресс-курс
- Название:Python. Экспресс-курс
- Автор:
- Жанр:
- Издательство:Питер
- Год:2019
- ISBN:978-5-4461-0908-1
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Наоми Седер - Python. Экспресс-курс краткое содержание
Наоми Седер рассказывает не только об основных особенностях языка Python, но и его объектно-ориентированных возможностях, которые появились в Python 3. Данное издание учитывает все изменения, которые произошли с языком за последние 5 лет, а последние 5 глав рассказывают о работе с большими данными.
Python. Экспресс-курс - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Любой разработчик, которому доводилось работать со строками, наверняка посчи-тает методы split и join бесценными. По сути они противоположны друг другу: split возвращает список подстрок, а join берет список строк и объединяет их в одну строку, вставляя исходную строку между каждой парой элементов. Обычно split
использует символы-пропуски в качестве разделителя при разбиении, но это по-ведение можно изменить при помощи необязательного аргумента. Конкатенация строк оператором + полезна, но она неэффективна для объединения большого количества строк в одну строку, потому что при каждом применении + создается новый объект строки. В предыдущем примере «Hello, World» создаются три строковых объекта, один из которых будет немедленно отброшен. Лучше вос-пользоваться функцией join :
>>> " ".join(["join", "puts", "spaces", "between", "elements"]) 'join puts spaces between elements'
Изменяя строку, используемую для вызова join , можно разместить между объ-единяемыми строками практически любые символы: >>> "::".join(["Separated", "with", "colons"])
'Separated::with::colons'
Для объединения элементов списка может использоваться даже пустая строка: >>> "".join(["Separated", "by", "nothing"])
'Separatedbynothing'
Пожалуй, на практике метод split чаще всего используется в качестве простого механизма разбора разделенных данных, хранящихся в текстовых файлах. По умол-чанию split осуществляет разбивку по пропускам, а не по одиночным пробелам, но вы также можете приказать методу разбивать текст по конкретной последователь-ности символов, которая передается в необязательном аргументе: >>> x = "You\t\t can have tabs\t\n \t and newlines \n\n " \ "mixed in"
>>> x.split()
['You', 'can', 'have', 'tabs', 'and', 'newlines', 'mixed', 'in'] >>> x = "Mississippi"
>>> x.split("ss")
['Mi', 'i', 'ippi']
Иногда бывает полезно разрешить, чтобы последнее поле объединенной строки содержало произвольный текст — возможно, даже с подстроками, которые могли бы совпасть с разделителями при чтении этих данных. Для этого можно указать, сколько разбиений должен выполнить метод split при генерировании результатов при помощи второго необязательного аргумента. Если передать в этом аргументе n , метод split будет обрабатывать входную строку, пока не проведет n разбиений (и сгенерирует список, элементами которого являются n +1 подстрок) или пока не кончится строка. Несколько примеров:
>>> x = 'a b c d'
>>> x.split(' ', 1)
['a', 'b c d']
>>> x.split(' ', 2)
['a', 'b', 'c d']
>>> x.split(' ', 9)
['a', 'b', 'c', 'd']
При использовании split со вторым необязательным аргументом необходимо за-дать первый аргумент. Чтобы метод split выполнял разбиение по пропускам и при этом использовал второй аргумент, передайте None в первом аргументе. Я очень часто использую методы split и join — чаще всего при работе с текстовыми файлами, сгенерированными другими программами. Если вы захотите генерировать более стандартные выходные файлы в своих программах, хорошими кандидатами станут модули csv и json из стандартной библиотеки Python.
БЫСТРАЯ.ПРОВЕРКА:.SPLIT.И.JOIN
Как использовать методы split и join для замены всех пропусков в строке x дефисами — например, преобразовать "this is a test" в "this-is-a-test" ?
6.4.2. Преобразование строк в числа
Функции int и foat преобразуют строки в целые числа или числа с плавающей точкой соответственно. Если функциям передается строка, которая не может интерпретироваться как число заданного типа, эти функции выдают исключение ValueError . Исключения рассматриваются в главе 14. Кроме того, int можно передать необязательный второй аргумент с основанием системы счисления, которая должна использоваться при интерпретации входной строки:
>>> float('123.456')
123.456
>>> float('xxyy')
Traceback (innermost last):
File "", line 1, in ?
ValueError: could not convert string to float: 'xxyy'
>>> int('3333')
3333
>>> int('123.456') Целое число не может содержать точку
Traceback (innermost last):
File "", line 1, in ?
ValueError: invalid literal for int() with base 10: '123.45 >>> int('10000', 8) 10000 интерпретируется как восьмеричное число 4096
>>> int('101', 2)
5
>>> int('ff', 16)
255
>>> int('123456', 6) 123456 не может интерпретироваться как числоTraceback (innermost last): в шестеричной системе счисленияFile "", line 1, in ?
ValueError: invalid literal for int() with base 6: '123456' А вы поняли причину последней ошибки? Я затребовала, чтобы строка интерпрети-ровалась как число в системе счисления с основанием 6, но цифра 6 в шестеричном числе присутствовать не может. Хитро!
БЫСТРАЯ.ПРОВЕРКА:.ПРЕОБРАЗОВАНИЕ.СТРОК.В.ЧИСЛА Какая из следующих строк не будет преобразована в число и почему? 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" ?
Читать дальшеИнтервал:
Закладка: