Найти тему
postHack

Основы Python #4. Строки.

И так, в прошлом уроке мы изучили условия и циклы, а сегодня перейдет к более детальному изучению строк.

Начнем с ввода данных с клавиатуры.

Для того, чтобы ввести данные с клавиатуры используется функция input() .

<имя переменной>=input()

В кавычках можно указать текст и он выведется также как, если бы выводили текст через print() .

Пример использования input().
Пример использования input().

Чтобы ввести число, нужно преобразовать ввод input :

<имя переменной>=int(input())

Аналогично и для других типов данных.

Ввод числа.
Ввод числа.

Строки

Как мы уже говорили в этой статье в python можно складывать строки, а также умножать их на число. Но, что еще можно делать со строками?

Можно проверять входит ли элемент в строку(кстати это работает и с списками, код указанный ниже вернет True если в строке содержатся данные, в качестве данных может быть переменная, может быть другая строка):

<данные> in <строка>

Также можно использовать оператор, который вернет True , если возвращает False - not.

<данные> not in <строка>

Для того, чтобы узнать длину строки используется уже знакомая нам функция len().

Также можно преобразовывать числа в символы при помощи функции chr() .

chr(число)

И есть обратная ей функция ord() , которая преобразует из символа в число.

ord(символ)

Про str() мы уже знаем из статьи о типах данных .

chr(), ord() - работают с ASCII и UNICODE .

Строки, как и списки могут индексироваться, мы можем обратиться к любому символу строки(напомню, что индексация начинается с нуля):

a="postHack" print(a[4]) #Выведет H.

Кстати самое время познакомить вас с комментариями в коде. Если вдруг вам нужно оставить в коде заметку, вам достаточно поставить перед текстом # и интерпритатор не будет воспринимать весь текст, находящийся в этой строке.

Пример бесполезной программы с полученными знаниями.
Пример бесполезной программы с полученными знаниями.
Результат работы данной программы.
Результат работы данной программы.

Также как и списки, строки поддерживают срезы. Если вы не знаете как их делать ознакомьтесь с этой статьей .

В python , также существуют так называемые f-строки . Используются они при выводе данных.

Допустим у вас есть 2 переменные k и l . И вам нужно вывести их значения и какой либо текст, вы можете сделать это так:

print('k=', k, ' l=', l)

Но это некрасиво, а в некоторых случаях даже громоздко. Можно использовать:

print(f"k={k}, l={l}")

Хотя строки и не изменяемый тип, мы все-таки можем их менять(аргумент кол-во замен не обязательный):

<переменная со строкой>.replace(<символ который нужно изменить>,<символ на который нужно изменить>, <кол-во замен>)
Пример программы, использующей полученные вами знания.
Пример программы, использующей полученные вами знания.
Результат работы данной программы.
Результат работы данной программы.

Но, допустим нам нужно изменить регистр символов, для этого есть несколько функций:

<переменная со строкой>.capitalize() - первая буква в верхний, остальные в нижний.

<переменная со строкой>.lower() - все буквы в нижний.

<переменная со строкой>.upper() - все буквы в верхний.

<переменная со строкой>.swapcase() - все буквы в противоположный.

<переменная со строкой>.title() - первая буква каждого слова становится заглавной.

Программа преобразующая реестр строки и результат ее выполнения.
Программа преобразующая реестр строки и результат ее выполнения.

Ну, что же, с реестром разобрались, а если нам нужно найти что-то в строке и заменить?

Для начала давайте обозначим как-то нашу переменную со строкой, ибо каждый раз писать <переменная со строкой> не удобно будем вместо этого писать s. На будущее здесь аргументы начало и конец не обязательны, они ограничивают диапазон поиска, на их место пишутся индексы начала поиска и конца.

Подсчитать кол-во вхождений подстроки в строку:

s.count(<подстрока>, <начало>, <конец>)

Проверить оканчивается ли строка подстрокой, если да вернет True :

s.endswith(<подстрока>, <начало>, <конец>)

Проверить начинается ли строка с подстроки, если да вернет True :

s.startswith(<подстрока>, <начало>, <конец>)

Ищет подстроку в строке и возвращает индекс начала подстроки(если не найдено возвращает -1):

s.find(<подстрока>, <начало>, <конец>)

Аналог find() , но возвращает ValueError , в случае не нахождения:

s.index(<подстрока>, <начало>, <конец>)

Аналог find() , ищущий с конца строки:

s.rfind(<подстрока>, <начало>, <конец>)

Аналог index() , ищущий с конца строки:

s.rindex(<подстрока>, <начало>, <конец>)
Пример программы.
Пример программы.
Результат выполнения программы.
Результат выполнения программы.

А, что если нам нужно проверить содержимое строки?

Если мы хотим узнать состоит ли она из букв и цифр(если да функция вернет True ):

s.isalnum()

Если мы хотим узнать состоит ли строка только из букв:

s.isalpha()

Только из цифр:

s.isdigit()

Подходит ли строка в качестве названия переменной/класса/функции(осторожно вернет True даже для if, elif, continue, and, break, True, и тд... ):

s.isidentifier()

Проверка на нижний регистр:

s.islower()

Проверка на верхний регистр:

s.isupper()

Проверка на печатаемость символов(если символ можно напечатать вернет True ):

s.isprintable()

Состоит ли строка только из пробелов:

s.isspace()

Все ли слова написаны с заглавной буквы:

s.istitle()
Пример работы данных функций.
Пример работы данных функций.

Окей, с этим разобрались, а что там с форматированием?

Выравнивание строки по центру(аргумент символ для заполнения является не обязательным, по умолчанию пробел):

s.center(<ширина>,<символ для заполнения>)

Выравнивание по левому краю:

s.ljust(<ширина>,<символ для заполнения>)

Выравнивание по правому краю:

s.rjust(<ширина>,<символ для заполнения>)

Замена табуляции пробелом(символ табуляции \t):

s.expandtabs(<кол-во пробелов по умолчанию 8>)

Вырезает пробелы слева(если заполнить аргумент символы, то удалит набор символов, которые нужно удалить):

s.lstrip(<символы>)

Вырезает пробелы справа(если заполнить аргумент символы, то удалит набор символов, которые нужно удалить):

s.rstrip(<символы>)

Вырезает пробелы слева и справа(если заполнить аргумент символы, то удалит набор символов, которые нужно удалить):

s.strip(<символы>)

Дополнить строку нулями с лева до достижения указанной длины:

s.zfill(<длина>)
Пример работы данных функций.
Пример работы данных функций.

Теперь расскажу вам о том как превращать строки в списки и наоборот.

Преобразование списка в строку(функция вернет строку, в которой буду все элементы списка разделенные при помощи разделителя):

<разделитель>.join(<список>)

Разделить строку и превратить в кортеж(функция вернет кортеж из трех элементов: первый - часть до разделителя, второй - разделитель, третий - часть после разделителя):

s.partition(<разделитель>)

Также есть .rpartition() , работает аналогично, но с конца.

Разделить строку на под строки, получив на выходе список(по умолчанию разделитель стоит пробел, а maxsplit установлен -1, делит строку бесконечно, пока есть разделители):

string.split(sep=<разделитель>, maxsplit=<максимальное кол-во разделений>)

Есть аналогичная функция .rsplit() , работает аналогично, но максимальное кол-во отделений идет с конца.

Разделить строку на список строк(любой символ указанный ниже считается границей строки. Если параметр оставить окончания имеет значение True, то перечисленные ниже символы не удаляются, а сохраняются вместе с словом ):

Список символов считающихся концом строки.
Список символов считающихся концом строки.
s.splitlines(<оставить окончания>)
Пример программы с полученными знаниями.
Пример программы с полученными знаниями.

Ну, что же на этом вроде со строками пока все, в следующем уроке изучим функции и будем писать первую более менее не бесполезную программу.