Строки

Обновлено: 2024-03-12
5 мин

В Python существует несколько типов данных. Основные типы данных, с которыми вы, вероятно, будете чаще всего встречаться, - это строка, целое число, плавающая цифра, список, словарь и кортеж. В этой главе мы рассмотрим строковый тип данных. Вы удивитесь, как много вещей можно делать со строками в Python прямо из коробки. Существует также модуль string, который можно импортировать для получения доступа к еще большей функциональности, но мы не будем рассматривать его в этой главе. Вместо этого мы рассмотрим следующие темы:

  • Как создавать строки
  • Конкатенация строк
  • Методы работы со строками
  • Нарезка строк
  • Подстановка строк

Создание

Строки обычно создаются одним из трех способов. Вы можете использовать одинарные, двойные или тройные кавычки. Давайте посмотрим!

>>> text1 = 'Привет, мир!'
>>> text2 = "Python - это замечательный язык программирования"
>>> text3 = '''Строка с тройными кавычками может быть выполнена с помощью трех одинарных или трех двойных кавычек.
При выводе сохраняются разрывы строк.'''

Существует еще один способ создания строки - это использование метода str:

>>> my_number = 123
>>> my_string = str(my_number)
>>>
>>> my_string
'123'

Методы

Строка - это объект в Python. Фактически, все в Python является объектом.

Строки в Python поддерживают множество операций, включая конкатенацию (объединение строк), повторение, индексацию, извлечение срезов и многое другое.

string1 = 'Привет, '
string2 = 'мир!'
string3 = string1 + string2  # конкатенация строк
print(string3)  # выведет 'Привет, мир!'

string4 = 'Python '
string5 = string4 * 3  # повторение строки
print(string5)  # выведет 'Python Python Python'

string6 = 'Hello, world!'
print(string6[7])  # индексация символов, выведет 'w'

string7 = 'Python is awesome'
print(string7[0:6])  # извлечение среза, выведет 'Python'

Существует множество других методов работы со строками. Например, если бы вы хотели, чтобы все было в нижнем регистре, вы бы использовали метод lower(). Если бы вы хотели удалить все пробелы в начале и в конце строки, вы бы использовали метод strip(). Чтобы получить список всех методов работы со строками, введите в интерпретатор следующую команду:

>>> dir(my_string)

В итоге вы должны увидеть нечто похожее на это:

['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', 
'__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', 
'__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', 
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', 
'__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 
'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 
'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 
'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 
'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 
'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

Вы можете смело игнорировать методы, начинающиеся и заканчивающиеся двойными знаками, такие как add. Они не используются в повседневном кодировании на Python. Вместо этого сосредоточьтесь на других методах.

Если вы хотите узнать, что делает один из них, просто попросите помощи. Например, вы хотите узнать, для чего нужна capitalize. Чтобы узнать это, введите

>>> help(my_string.capitalize)

Это вернет следующую информацию:

Help on built-in function capitalize:

capitalize() method of builtins.str instance
    Return a capitalized version of the string.
    
    More specifically, make the first character have upper case and the rest lower
    case.

Возвращает копию строки S, в которой заглавным является только первый символ.

Вы только что узнали немного о теме, называемой интроспекцией. Python позволяет легко проводить интроспекцию всех своих объектов, что делает его очень удобным в использовании. По сути, интроспекция позволяет вам спрашивать Python о самом себе. В одном из предыдущих разделов вы узнали о преобразовании. Возможно, вы задавались вопросом, как определить тип переменной (например, int или string). Вы можете попросить Python рассказать вам об этом!

>>> type(my_string)
    <type 'str'>

Переменная my_string имеет тип str.

Разделение строки на подстроки

Одной из задач с которой вы будете часто заниматься в реальном мире, - это разделение строк. Давайте посмотрим, как работает нарезка на примере следующей строки:

>>> my_string = "I like Python!"

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

>>> my_string[0:4]
'I li'

Это захватит первый символ в строке до 4-го символа, но не включая его. Да, Python основан на нулях. Это будет немного проще понять, если мы обозначим позицию каждого символа в таблице:

0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13
I |   | l | i | k | e |   | P | y | t |  h | o | n  | !

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

>>> my_string[:1]
'I'
>>> my_string[0:12]
'I like Pytho'
>>> my_string[0:13]
'I like Python'
>>> my_string[0:14]
'I like Python!'
>>> my_string[0:-5]
'I like Py'
>>> my_string[:]
'I like Python!'
>>> my_string[2:]
'like Python!'

Форматирование строк

Для форматирования строк в Python есть несколько способов, но одним из наиболее распространенных является метод format(). Он позволяет объединять строки и значения переменных, заданных в скобках {}. Например:

name = "Alice"
age = 30
print("Меня зовут {}, и мне {} лет".format(name, age))

В этом примере мы использовали фигурные скобки для обозначения места, где нужно вставить переменные name и age. Метод format() позволяет использовать несколько переменных, их значения будут подставлены в порядке следования внутри скобок.

Кроме того, можно задать формат вывода для каждой переменной. Например, чтобы вывести значение переменной age в шестнадцатеричном формате, можно использовать следующий код:

age = 30
print("Мне {} лет, что в шестнадцатеричной системе счисления равно {}".format(age, hex(age)))

В результате мы получим вывод: ‘Мне 30 лет, что в шестнадцатеричной системе счисления равно 0x1e’.

Также в Python 3.6 и выше есть более удобный способ форматирования строк, называемый “f-strings” (форматированные строки). В этом случае мы используем символ f перед открывающей кавычкой, а переменные вставляем прямо внутрь фигурных скобок. Например:

name = "Alice"
age = 30
print(f"Меня зовут {name}, и мне {age} лет")

Этот код даст тот же результат, что и предыдущий.

Ресурсы:

Ранее Числа
Далее Списки