Работа со строками в Python: литералы
Это первая часть о работе со строками, а именно о литералах строк.
Литералы строк
Работа со строками в Python очень удобна. Существует несколько литералов строк, которые мы сейчас и рассмотрим.
Строки в апострофах и в кавычках
Экранированные последовательности позволяют вставить символы, которые сложно ввести с клавиатуры.
| Экранированная последовательность | Назначение |
|---|---|
| \n | Перевод строки |
| \a | Звонок |
| \b | Забой |
| \f | Перевод страницы |
| \r | Возврат каретки |
| \t | Горизонтальная табуляция |
| \v | Вертикальная табуляция |
| \N | Идентификатор ID базы данных Юникода |
| \uhhhh | 16-битовый символ Юникода в 16-ричном представлении |
| \Uhhhh… | 32-битовый символ Юникода в 32-ричном представлении |
| \xhh | 16-ричное значение символа |
| \ooo | 8-ричное значение символа |
| \0 | Символ Null (не является признаком конца строки) |
Если перед открывающей кавычкой стоит символ ‘r’ (в любом регистре), то механизм экранирования отключается.
Но, несмотря на назначение, «сырая» строка не может заканчиваться символом обратного слэша. Пути решения:
Строки в тройных апострофах или кавычках
Главное достоинство строк в тройных кавычках в том, что их можно использовать для записи многострочных блоков текста. Внутри такой строки возможно присутствие кавычек и апострофов, главное, чтобы не было трех кавычек подряд.
Это все о литералах строк и работе с ними. О функциях и методах строк я расскажу в следующей статье.
Строки и функция print в Python
Строка представляет собой простую последовательность символов. С ней можно работать разными способами. Любая последовательность символов, заключенная в кавычки, в Python считается строкой. Кавычки могут быть одинарные и двойные.
«Строка Python.»
‘Строка Python.’
Это позволяет использовать внутренние кавычки в строках. «Язык программирования ‘Python’ «. Рассмотрим операции со строками.
| Содержание страницы: |
|---|
| 1. Функция print() |
| 2. Табуляция и разрыв строк |
| 3. Изменение регистра символов в строках |
| 4. F-строки. Форматирование строк |
| 5. Удаление пропусков |
| 6. Комментарии |
Встроенная функция print() выводит свой аргумент в строке текста.
>>> print( ‘Hello world!’ )
Hello world!
>>> print( «Hello world!» )
Hello world
>>> print( «Hello», ‘world!’ )
Hello world
2. Табуляция и разрыв строк в Python.
В программировании термином пропуск ( whitespace ) называются такие непечатаемые символы, как пробелы, табуляции и символы конца строки. Пропуски структурируют текст, чтобы пользователю было удобнее читать его.
В таблице приведены наиболее часто встречаемые комбинации символов.
| Описание | |
|---|---|
| \t | Вставляет символ горизонтальной табуляции |
| \n | Вставляет в строку символ новой строки |
| \\ | Вставляет символ обратного слеша |
| \» | Вставляет символ двойной кавычки |
| \’ | Вставляет символ одиночной кавычки |
>>> print(«Python»)
Python
>>> print(» \t Python»)
Python
>>> print(«Языки программирования: \n Python \n Java \n C»)
Языки программирования:
Python
Java
C
Табуляция и разрыв строк могут сочетаться в тексте. В следующем примере происходит вывод одного сообщения с разбиением на строки с отступами.
>>> print(«Языки программирования: \n\t Python \n\t Java \n\t C»)
Языки программирования:
Python
Java
C
3. Изменение регистра символов в строках в Python.
>>> name = «Hello world!»
>>> print(name. title() )
Hello World!
>>> print(name. upper() )
HELLO WORLD!
>>> print(name. lower() )
hello world!
Метод lower() очень часто используется для хранения данных. Редко при вводе данных все пользователи вводят данные с точным соблюдением регистра. После ввода все данные преобразуются к нижнему регистру и уже затем выводится информация с использованием регистра, наиболее подходящего.
4. F-строки. Форматирование строк в Python.
Часто требуется использовать значения переменных внутри строки. Предположим, что у вас имя и фамилия хранятся в разных переменных и вы хотите их объединить для вывода полного имени.
Python заменить каждую переменную на ее значение при выводе строки.
>>> name = «Александр»
>>> surname = «Пушкин»
>>> full_name = f»
>>> print(full_name)
Александр Пушкин
Буква f происходит от слова format, потому что Python форматирует строку, заменяя имена переменных в фигурных скобках на их значения. В итоге выводится строка имя и фамилия.
>>> name = «александр»
>>> surname = «пушкин»
>>> full_name = f»
>>> print( f» Русский поэт
Русский поэт Александр Пушкин!
>>> message = f» Мой любимый поэт
>>> print(message)
Мой любимый поэт Александр Пушкин
Важно: F-строки впервые появились в Python3.6. Если вы используете более раннею версию, используйте метод format. Что бы использовать метод format(), перечислите переменные в круглых скобках после format.
full_name = «<> <>«.format(name, surname)
5. Удаление пропусков в Python.
| метод | описание |
|---|---|
| rstrip() | удаляет пропуск у правого края |
| lstrip() | удаляет пропуск у правого края |
| strip() | удаляет пропуски с обоих концов |
Python может искать лишние пропуски у правого и левого края строки, так же может удалить с обоих концов строки.
>>> language. rstrip ()
‘ python’
>>> language. lstrip ()
‘python ‘
>>> language. strip ()
‘python’
>>> language
‘ python ‘
Важно: Python не удаляет навсегда эти пропуски в переменной. Чтобы исключить пропуск из строки, следует ее перезаписать.
>>> language = ‘ python ‘
>>> language
‘ python ‘
>>> language = language. strip ()
>>> language
‘python’
Сначала пропуски удаляются методом strip() и потом записываются в исходную переменную.
6. Комментарии в Python.
В Python признаком комментария является символ «решетка» ( # ). Интерпретатор Python игнорирует все символы, следующие в коде после # до конца строки.
>>> print(‘Hello Python’)
Hello Python
>>> # print(‘Hello Python’)
Python табуляция (отступы)
О дна из особенностей Python — для оформления блоков кода вместо привычных фигурных скобок, как в C, C ++, Java или операторных скобок begin … end как в Pascal, используются отступы (или табуляция).
Подробнее о том, какие есть правила расстановки отступов — рассмотрим далее.
Почему табуляция в Питоне так важна?
Что такое отступ? Говоря простыми словами, это просто добавление пробела перед определенным оператором.
Многим программистам жесткое соблюдение отступов может показаться избыточной мерой. Однако именно из-за строго соблюдения правил форматирования, код на Python — чистый, понятный и аккуратный. Отсюда следующие плюсы 👍:
Отступы в языке Python — это способ указать интерпретатору, что оператор (или целая их группа) — это определенный block-комбинация команд для выполнения задачи.
В большинстве других языков, таких как семейство C, Java и прочих для оформления блоков используются фигурные скобки, в Питоне — отступы, для создания которых обычно используются пробелы. Все команды, отделенные от начала строки одним и тем же расстоянием, принадлежат к одному и тому же блоку. Если в нем выделяется еще один блок — используется еще один отступ вправо, и так далее. Рассмотрим это на примере:
def my_small_function(): # [0 пробелов] определение функции со знаком «:» в конце if a > b: # [4 пробела] начало блока условия, располагается внутри функции return a # [8 пробелов] часть блока if else: # [4 пробела] продолжение блока условия, на том же уровне, что и if return b # [8 пробелов] часть блока else print(my_small_function()) # [0 пробелов] вызов функции вне ее блока
💡 По умолчанию в Python используется 4 пробела в качестве отступа
Однако программист может использовать и другое их количество, но не менее одного.
Что нам говорит PEP8?
Для каждого уровня отступов необходимо использовать по 4 пробела.
Строки большой длины должны вертикально выравнивать внутренние элементы, для этого используется неявная линия в скобках или с применением висячего отступа. Во втором случае следует помнить: на первой линии не должны располагаться аргументы, остальные строки располагаются так, чтобы быть продолжением неявной линии.
Примеры кода
👍 Правильное оформление
Расположение закрывающих скобок в конструкциях с многими строками под началом первой строки:
my_list = [ one, two, three, four, five, six, ] result = some_arguments( ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, )
👎 Ошибочное оформление
😐 Выборочное оформление
В многострочных конструкциях закрывающие скобки можно устанавливать на отдельной строке под первым символом (не пробелом) последнего пункта:
some_list = [ one, two, three, four, five, six, ] res = some_arguments( ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, )
Табуляция или пробелы — что использовать? 🤷♂️
Согласно официальной документации, самым предпочтительным способом оформления отступов является использование пробелов, обычно 4
Табуляция может использоваться в случае поддержки готового кода, где все отступы оформлены именно таким способом.
Настройка IDE для работы с отступами
Чтобы при написании кода не задумываться о правильной расстановке пробелов для отступов, в редакторах кода и IDE используется специальный функционал, самостоятельно распознающий место создания отдельных блоков, в результате чего пробелы расставляются автоматически.
Рассмотрим, как можно настроить или изменить такие параметры в самых популярных IDE, когда возникает такая необходимость.
PyCharm
В случае использования интегрированной среды разработки PyCharm для настройки оформления отступов необходимо последовательно перейти по таким пунктам меню:
File → Settings → Editor → Code style → Python
Для настроек параметров есть 3 поля:
VSCode
File → Preferences → Settings
Далее для ускорения в строке поиска ввести tab и установить нужные значения для таких опций:
Ошибки при работе с отступами
При неправильном оформлении отступов интерпретатор Python будет сообщать об ошибках. Таких ошибок может быть несколько, рассмотрим основные.
expected an indented block
Данная ошибка может возникать в случае, когда после оглашения начала блока кода — def, if, while и некоторых других на следующей строке отсутствует отступ. Для ее исправления после начала блока должна быть хотя бы одна вложенная строка с отступом.
Возникает ошибка в том случае, когда перед началом строки есть отступ, но на предыдущей отсутствует оглашение начала блока кода, то есть, нет def, if, elif, else, for или while. Обычно такая ситуация возникает случайно, когда программист ставит слишком много пробелов в начале строки.
Indentationerror: expected an indented block
Ошибка возникает в том случае, когда после оглашения блока кода на следующей строке нет отступа или же сделанные отступы состоят из разного количества пробелов.
Таким образом, отступы в языке программирования Python, в отличие от многих других, играют такую же важную роль, как и служебные слова, так как именно они определяют создание блоков кода. Для каждого indent рекомендуется использовать 4 пробела, однако программист по своему желанию может установить и другое их количество, главное — одинаковое во всем проекте.
Как работает табуляция в python?
TabError: inconsistent use of tabs and spaces in indentation
Но я удалил tab а код все равно мне пишет что он там есть
Я не понимаю почему так происходит.
Я буквально нажимаю только TAB и после Backspace и у меня получается такая чехарда
Простой 3 комментария
Описанная вами ошибка происходит из-за смешивания в отступах табов и пробелов.
Иногда редактор не очень понятно показывает вам где у вас табуляция, а где группа пробелов. Этим грешит, например, mcedit.
рецепт прост: никогда не пользуйтесь табами в питоне. Вопрос, конечно, холиварный, но если у вас с табами проблемы, то вам они точно нигде не нужны. Это значит, что вы не можете адекватно настроить редактор и увидеть где табы и где пробелы.
Для вас будет правильным объяснить редактору, что для питоновских файлов следует всегда заменять таб на 4 пробела.
Просто когда я добовляю tab и после удаляю его то код мне выдает ошибку
TabError: inconsistent use of tabs and spaces in indentation
Введение в Python
В данной статье мы затронем основы Python. Мы все ближе и ближе к цели, в общем, скоро приступим к работе с основными библиотеками для Data Science и будем использовать TensorFlow (для написания и развертывания нейросетей, тобишь Deep Learning).
Установка
Python можно скачать с python.org. Однако если он еще не установлен, то вместо
него рекомендую дистрибутивный пакет Anaconda, который уже включает в себя большинство библиотек, необходимых для работы в области науки о данных.
Если вы не используете дистрибутив Anaconda, то не забудьте установить менеджер пакетов pip, позволяющий легко устанавливать сторонние пакеты, поскольку некоторые из них нам понадобятся. Стоит также установить намного более удобную для работы интерактивную оболочку IPython. Следует учитывать, что дистрибутив Anaconda идет вместе с pip и IPython.
Пробельные символы
Во многих языках программирования для разграничения блоков кода используются
фигурные скобки. В Python используются отступы:
Это делает код легко читаемым, но в то же время заставляет следить за форматированием. Пробел внутри круглых и квадратных скобок игнорируется, что облегчает написание многословных выражений:
и легко читаемого кода:
Для продолжения оператора на следующей строке используется обратная косая черта, впрочем, такая запись будет применяться редко:
В следствие форматирования кода пробельными символами возникают трудности при копировании и вставке кода в оболочку Python. Например, попытка скопировать следующий код:
в стандартную оболочку Python вызовет ошибку:
потому что для интерпретатора пустая строка свидетельствует об окончании блока кода с циклом for.
Оболочка IPython располагает «волшебной» функцией %paste, которая правильно вставляет все то, что находится в буфере обмена, включая пробельные символы.
Модули (Импортирование библиотек)
Некоторые библиотеки среды программирования на основе Python не загружаются по умолчанию. Для того чтобы эти инструменты можно было использовать, необходимо импортировать модули, которые их содержат.
Один из подходов заключается в том, чтобы просто импортировать сам модуль:
Здесь re — это название модуля, содержащего функции и константы для’ работы с регулярными выражениями. Импортировав таким способом весь модуль, можно обращаться к функциям, предваряя их префиксом re.
Если в коде переменная с именем re уже есть, то можно воспользоваться псевдонимом модуля:
Псевдоним используют также в тех случаях, когда импортируемый модуль имеет громоздкое имя или когда в коде происходит частое обращение к модулю.
Например, при визуализации данных на основе модуля matplotlib для него обычно
используют следующий стандартный псевдоним:
Если из модуля нужно получить несколько конкретных значений, то их можно импортировать в явном виде и использовать без ограничений:
Функции
Функция — это правило, принимающее ноль или несколько входящих аргументов и возвращающее соответствующий результат. В Python функции обычно определяются при помощи оператора def:
Функции в Python рассматриваются как объекты первого класса. Это означает, что их можно присваивать переменным и передавать в другие функции так же, как любые другие аргументы:
Кроме того, можно легко создавать короткие анонимные функции или лямбда выражения:
Лямбда-выражения можно присваивать переменным. Однако рекомендуют пользоваться оператором def:
Параметрам функции, помимо этого, можно передавать аргументы по умолчанию, которые следует указывать только тогда, когда ожидается значение, отличающееся от значения по умолчанию:
Иногда целесообразно указывать аргументы по имени:
В дальнейшем функции будут использоваться очень часто.
Строки
Символьные строки (или последовательности символов) с обеих сторон ограничиваются одинарными или двойными кавычками (они должны совпадать):
Обратная косая черта используется для кодирования специальных символов. Например:
Если требуется непосредственно сама обратная косая черта, которая встречается
в именах каталогов в операционной системе Windows, то при помощи r ‘»‘ можно создать неформатированную строку:
Многострочные блоки текста создаются при помощи тройных одинарных (или
двойных) кавычек:
Исключения
Когда что-то идет не так, Python вызывает исключение. Необработанные исключения приводят к непредвиденной остановке программы. Исключения обрабатываются при помощи операторов try и except:
Хотя во многих языках программирования использование исключений считается плохим стилем программирования, в Python нет ничего страшного, если он используется с целью сделать код чище, и мы будем иногда поступать именно так.
Списки
Наверное, наиважнейшей структурой данных в Python является список. Это просто упорядоченная совокупность (или коллекция), похожая на массив в других языках программирования, но с дополнительными функциональными возможностями.
Устанавливать значение и получать доступ к n-му элементу списка можно при помощи квадратных скобок:
Помимо этого, квадратные скобки применяются для «нарезки» списков:
В Python имеется оператор ln, который проверяет принадлежность элемента списку:
Проверка заключается в поочередном просмотре всех элементов, поэтому пользоваться им стоит только тогда, когда точно известно, что список небольшой или неважно, сколько времени уйдет на проверку.
Списки легко сцеплять друг с другом:
Если нужно оставить список х без изменений, то можно воспользоваться сложением списков:
Обычно к спискам добавляют по одному элементу за одну операцию:
Нередко бывает удобно распаковать список, если известно, сколько элементов в нем содержится:
Если с обеих сторон выражения число элементов не одинаково, то будет выдано сообщение об ошибке ValueError.
Для отбрасываемого значения обычно используется символ подчеркивания:
Кортежи
Кортежи — это неизменяемые (или иммутабельные) двоюродные братья списков.
Практически все, что можно делать со списком, не внося в него изменения, можно делать и с кортежем. Вместо квадратных скобок кортеж оформляют круглымискобками, или вообще обходятся без них:
Кортежи обеспечивают удобный способ для возвращения из функций нескольких значений:
Кортежи (и списки) также используются во множественном присваивании:
Словари
Словарь или ассоциативный список — это еще одна основная структура данных.
В нем значения связаны с ключами, что позволяет быстро извлекать значение, соответствующее конкретному ключу:
Доступ к значению по ключу можно получить при помощи квадратных скобок:
При попытке запросить значение, которое в словаре отсутствует, будет выдано сообщение об ошибке KeyError:
Проверить наличие ключа можно при помощи оператора in:
Словари имеют метод get(), который при поиске отсутствующего ключа вместо вызова исключения возвращает значение по умолчанию:
Присваивание значения по ключу выполняется при помощи тех же квадратных скобок:
Словари часто используются в качестве простого способа представить структурные
данные:
Помимо поиска отдельных ключей можно обратиться ко всем сразу:
Ключи должны быть неизменяемыми; в частности, в качестве ключей нельзя использовать списки. Если нужен составной ключ, то лучше воспользоваться кортежем или же найти способ, как преобразовать ключ в строку.
Словарь defaultdict
Пусть в документе необходимо подсчитать слова. Очевидным решением задачи является создание словаря, в котором ключи — это слова, а значения — частотности слов (или количества вхождений слов в текст). Во время проверки слов в случае, если текущее слово уже есть в словаре, то его частотность увеличивается, а если отсутствует, то оно добавляется в словарь:
Кроме этого, можно воспользоваться nриемом под названием «лучше просить прощения, чем разрешения» и перехватывать ошибку при попытке обратиться к отсутствующему ключу:
Третий прием — использовать метод get(), который изящно выходит из ситуации с отсутствующими ключами:
Все перечисленные приемы немного громоздкие, и по этой причине целесообразно использовать словарь defaultdict (который еще называют словарем со: значением по умолчанию). Он похож на обычный словарь за исключением одной особенности — при попытке обратиться к ключу, которого в нем нет, он сперва добавляет для него значение, используя функцию без аргументов, которая предоставляется при его создании. Чтобы воспользоваться словарями defaultdict, их необходимо импортировать из модуля collections:
Кроме того, использование словарей defaultdict имеет практическую пользу во время работы со списками, словарями и даже с пользовательскими функциями:
Эти возможности понадобятся, когда словари будут использоваться для «сбора»
результатов по некоторому ключу и когда необходимо избежать повторяющихся
проверок на присутствие ключа в словаре.
Словарь Counter
Подкласс словарей counter трансформирует последовательность значений в похожий на словарь defaultdict(int) объект, где ключам поставлены в соответствие частотности или, выражаясь более точно, ключи отображаются (map) в частотности.
Он в основном будет применяться при создании гистограмм:
Его функционал позволяет достаточно легко решить задачу подсчета частотностей слов:
Словарь counter располагает методом most_common( ), который нередко бывает полезен:
Множества
Структура данных set или множество представляет собой совокупность неупорядоченных элементов без повторов:
Множества будут использоваться по двум причинам. Во-первых, операция in на множествах очень быстрая. Если необходимо проверить большую совокупность элементов на принадлежность некоторой последовательности, то структура данных set подходит для этого лучше, чем список:
Вторая причина — получение уникальных элементов в наборе данных:
Множества будут применяться намного реже словарей и списков.
Управляющие конструкции
Как и в большинстве других языков программирования, действия можно выполнять по условию, применяя оператор if:
Кроме того, можно воспользоваться однострочным трехместным оператором if-then-else, который будет иногда использоваться в дальнейшем:
В Python имеется цикл whlle:
Однако чаще будет использоваться цикл for совместно с оператором in:
Если требуется более сложная логика управления циклом, то можно воспользоваться операторами
В результате будет напечатано 0, 1, 2 и 4.
Истинность
Булевы переменные в Python работают так же, как и в большинстве других языков программирования лишь с одним исключением — они пишутся с заглавной буквы:
Для обозначения несуществующего значения применяется специальный объект None, который соответствует значению null в других языках:
В Python может использоваться любое значение там, где ожидается логический тип Boolean. Все следующие элементы имеют логическое значение False:
Вот более простой способ сделать то же самое:
поскольку логический оператор and возвращает второе значение, в случае если первое истинное, и первое значение, в случае если оно ложное. Аналогичным образом, если х в следующем ниже выражении является либо числом, либо, возможно, None, то результат так или иначе будет числом:
Встроенная функция all языка Python берет список и возвращает True только тогда, когда каждый элемент списка истинен, а встроенная функция any возвращает тrue, когда истинен хотя бы один элемент:







