Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Строки в Python: создание, форматирование и манипуляции

Строки в Python

В этом уроке вы научитесь создавать, форматировать, изменять и удалять строки в Python. Также вы познакомитесь с различными операциями и функциями строк.

Видео: Строки в Python

Что такое строка в Python?

Строка — это последовательность символов.

Символ — просто знак. Например, английский язык имеет 26 символов.

Компьютеры не работают с символами, они работают с числами (бинарными). Хотя вы видите символы на экране, внутри они хранятся и манипулируются как комбинации нулей и единиц.

Преобразование символа в число называется кодировкой, обратный процесс — декодировкой. ASCII и Unicode — популярные кодировки.

В Python строка — это последовательность Unicode-символов. Unicode был введён, чтобы включить все символы всех языков и привести кодировку к единообразию. Подробнее о Unicode в Python Unicode.


Как создать строку в Python?

Строки создаются заключением символов в одинарные или двойные кавычки. Тройные кавычки также допускаются, обычно для многострочных строк и docstrings.

# определение строк в Python
# все следующие эквивалентны
my_string = 'Hello'
print(my_string)
my_string = "Hello"
print(my_string)
my_string = '''Hello'''
print(my_string)
# тройные кавычки могут занимать несколько строк
my_string = """Hello, welcome to the world of Python"""
print(my_string)

При запуске вывод будет:

Hello
Hello
Hello
Hello, welcome to the world of Python

Как получить доступ к символам строки?

Отдельные символы доступны через индексацию, диапазон — через срезы. Индекс начинается с 0. Попытка доступа за пределами диапазона вызывает IndexError. Индекс должен быть целым числом, float и другие типы вызывают TypeError.

Python позволяет отрицательную индексацию для последовательностей.

Индекс -1 ссылается на последний элемент, -2 — на предпоследний и так далее. Диапазон элементов доступен через оператор среза : (двоеточие).

# Доступ к символам строки в Python
str = 'programiz'
print('str = ', str)
# первый символ
print('str[0] = ', str[0])
# последний символ
print('str[-1] = ', str[-1])
# срез со 2-го по 5-й символ
print('str[1:5] = ', str[1:5])
# срез с 6-го по 2-й с конца
print('str[5:-2] = ', str[5:-2])

Вывод программы:

str = programiz
str[0] = p
str[-1] = z
str[1:5] = rogr
str[5:-2] = am

При попытке доступа к индексу за пределами диапазона или использования нецелых чисел возникнут ошибки.

# индекс должен быть в диапазоне
>>> my_string[15]
...
IndexError: string index out of range
# индекс должен быть целым
>>> my_string[1.5]
...
TypeError: string indices must be integers

Срезы лучше визуализировать, считая индексы расположенными между элементами, как показано ниже.

Для доступа к диапазону нужен индекс, который вырежет нужную часть строки.

Строки в Python: создание, форматирование и манипуляции

Как изменить или удалить строку?

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

>>> my_string = 'programiz'
>>> my_string[5] = 'a'
...
TypeError: 'str' object does not support item assignment
>>> my_string = 'Python'
>>> my_string
'Python'

Нельзя удалить или убрать символы из строки. Но удалить строку целиком можно ключевым словом del.

>>> del my_string[1]
...
TypeError: 'str' object doesn't support item deletion
>>> del my_string
>>> my_string
...
NameError: name 'my_string' is not defined

Операции со строками в Python

Существует множество операций со строками, что делает их одним из самых используемых типов данных в Python.

Подробнее о типах данных в Python: Python Data Types

Конкатенация двух и более строк

Объединение двух и более строк в одну называется конкатенацией.

В Python для этого используется оператор +. Простое написание двух строковых литералов вместе тоже конкатенирует их.

Оператор * повторяет строку заданное число раз.

# Операции со строками в Python
str1 = 'Hello'
str2 = 'World!'
# используя +
print('str1 + str2 = ', str1 + str2)
# используя *
print('str1 * 3 =', str1 * 3)

Вывод:

str1 + str2 = HelloWorld!
str1 * 3 = HelloHelloHello

Написание двух строковых литералов вместе тоже конкатенирует их, как оператор +.

Для конкатенации строк в разных строках можно использовать скобки.

>>> # два строковых литерала вместе
>>> 'Hello ''World!'
'Hello World!'
>>> # используя скобки
>>> s = ('Hello '
... 'World')
>>> s
'Hello World'

Итерация по строке

Можно перебирать строку циклом for. Пример подсчёта букв 'l' в строке.

# Итерация по строке
count = 0
for letter in 'Hello World':
    if letter == 'l':
        count += 1
print(count, 'letters found')

Вывод:

3 letters found

Проверка принадлежности подстроки

Можно проверить, существует ли подстрока в строке, с ключевым словом in.

>>> 'a' in 'program'
True
>>> 'at' not in 'battle'
False

Встроенные функции для работы со строками

Различные встроенные функции, работающие с последовательностями, работают и со строками.

Часто используемые: enumerate() и len(). enumerate() возвращает объект enumerate, содержащий индекс и значение всех элементов строки как пары. Полезно для итерации. len() возвращает длину (число символов) строки.

str = 'cold'
# enumerate()
list_enumerate = list(enumerate(str))
print('list(enumerate(str)) = ', list_enumerate)
# количество символов
print('len(str) = ', len(str))

Вывод:

list(enumerate(str)) = [(0, 'c'), (1, 'o'), (2, 'l'), (3, 'd')]
len(str) = 4

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

Escape-последовательности

Если нужно напечатать текст вроде He said, "What's there?", нельзя использовать ни одинарные, ни двойные кавычки — будет SyntaxError, так как текст содержит оба типа кавычек.

>>> print("He said, "What's there?"")
...
SyntaxError: invalid syntax
>>> print('He said, "What's there?"')
...
SyntaxError: invalid syntax

Один способ — использовать тройные кавычки. Альтернатива — escape-последовательности.

Escape-последовательность начинается с обратного слэша и интерпретируется иначе. Если строка в одинарных кавычках, все одинарные внутри должны быть экранированы. То же для двойных. Вот как представить вышеуказанный текст:

# используя тройные кавычки
print('''He said, "What's there?"''')
# экранирование одинарных кавычек
print('He said, "What\'s there?"')
# экранирование двойных кавычек
print("He said, \"What's there?\"")

Вывод:

He said, "What's there?"
He said, "What's there?"
He said, "What's there?"

Список всех escape-последовательностей, поддерживаемых Python:

Escape-последовательностьОписание
\newlineОбратный слэш и новая строка игнорируются
\\Обратный слэш
\'Одинарная кавычка
\"Двойная кавычка
\aASCII Bell
\bASCII Backspace
\fASCII Formfeed
\nASCII Linefeed (новая строка)
\rASCII Carriage Return
\tASCII Horizontal Tab
\vASCII Vertical Tab
\oooСимвол с восьмеричным значением ooo
\xHHСимвол с шестнадцатеричным значением HH

Примеры:

>>> print("C:\\Python32\\Lib")
C:\Python32\Lib
>>> print("This is printed\nin two lines")
This is printed
in two lines
>>> print("This is \x48\x45\x58 representation")
This is HEX representation

Сырые строки (raw strings) для игнорирования escape-последовательностей

Иногда нужно игнорировать escape-последовательности внутри строки. Для этого поставьте r или R перед строкой. Это означает, что это сырая строка, и любые escape-последовательности внутри будут проигнорированы.

>>> print("This is \x61 \ngood example")
This is a
good example
>>> print(r"This is \x61 \ngood example")
This is \x61 \ngood example

Метод format() для форматирования строк

Метод format(), доступный у строкового объекта, очень универсален и мощен. Формат-строки содержат фигурные скобки {} как плейсхолдеры или поля замены, которые подставляются.

Можно использовать позиционные или именованные аргументы для указания порядка.

# Метод format() строки в Python
# порядок по умолчанию (неявный)
default_order = "{}, {} and {}".format('John','Bill','Sean')
print('\n--- Default Order ---')
print(default_order)
# порядок с позиционными аргументами
positional_order = "{1}, {0} and {2}".format('John','Bill','Sean')
print('\n--- Positional Order ---')
print(positional_order)
# порядок с именованными аргументами
keyword_order = "{s}, {b} and {j}".format(j='John',b='Bill',s='Sean')
print('\n--- Keyword Order ---')
print(keyword_order)

Вывод:

--- Default Order ---
John, Bill and Sean
--- Positional Order ---
Bill, John and Sean
--- Keyword Order ---
Sean, Bill and John

Метод format() может иметь опциональные спецификации формата. Они отделяются от имени поля двоеточием. Например, можно выровнять строку влево <, вправо > или по центру ^ в заданном пространстве.

Также можно форматировать целые как двоичные, шестнадцатеричные и т.д., а float — округлять или показывать в экспоненциальном формате. Существует множество вариантов форматирования. См. все варианты форматирования строк с format().

>>> # форматирование целых
>>> "Binary representation of {0} is {0:b}".format(12)
'Binary representation of 12 is 1100'
>>> # форматирование float
>>> "Exponent representation: {0:e}".format(1566.345)
'Exponent representation: 1.566345e+03'
>>> # округление
>>> "One third is: {0:.3f}".format(1/3)
'One third is: 0.333'
>>> # выравнивание строк
>>> "|{:<10}|{:^10}|{:>10}|".format('butter','bread','ham')
'|butter     |  bread   |       ham|'

Старый стиль форматирования

Можно форматировать строки как в старом стиле sprintf() языка C. Используется оператор %.

>>> x = 12.3456789
>>> print('The value of x is %3.2f' % x)
The value of x is 12.35
>>> print('The value of x is %3.4f' % x)
The value of x is 12.3457

Часто используемые методы строк в Python

У строкового объекта множество методов. Метод format(), упомянутый выше — один из них. Часто используемые: lower(), upper(), join(), split(), find(), replace() и др. Полный список всех встроенных методов работы со строками в Python.

>>> "PrOgRaMiZ".lower()
'programiz'
>>> "PrOgRaMiZ".upper()
'PROGRAMIZ'
>>> "This will split all words into a list".split()
['This', 'will', 'split', 'all', 'words', 'into', 'a', 'list']
>>> ' '.join(['This', 'will', 'join', 'all', 'words', 'into', 'a', 'string'])
'This will join all words into a string'
>>> 'Happy New Year'.find('ew')
7
>>> 'Happy New Year'.replace('Happy','Brilliant')
'Brilliant New Year'

Python

  1. Строки в C#: основы, операции и продвинутые техники
  2. Словари в Python: создание, манипуляции и продвинутые техники
  3. Освоение строк в Java: создание, методы и лучшие практики
  4. Строковые представления в Java Enums: настройка toString() и лучшие практики
  5. Освоение строковых операций в Python: replace, join, split, reverse, преобразование регистра
  6. Мастерство метода strip() в Python: подробное руководство и практические примеры
  7. Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
  8. Мастерство строк форматирования format() в Python: понятные примеры
  9. Python len(): практическое руководство по измерению длины объектов
  10. Мастерство метода String.find() в Python: синтаксис, примеры и альтернативы