Python3 Строки
Строки — наиболее часто используемый тип данных в Python. Мы можем использовать кавычки ('или") для создания строк.
Создать строку несложно — просто присвойте значение переменной. Например:
Python Доступ к значениям в строках
Python не поддерживает тип отдельного символа; отдельный символ также используется как строка в Python.
Python получает доступ к подстрокам с помощью квадратных скобок[]для извлечения строк. Синтаксис среза строк следующий:
variable[start index:end index]
Значения индексов начинаются с0как начального значения,-1— начальная позиция с конца.

Как в примере ниже:
Примеры (Python 3.0+)
Результат выполнения приведенного выше примера:
var1[0]: H var2[1:5]: unoo
Обновление строк Python
Вы можете извлечь часть строки и объединить её с другими полями, как в примере ниже:
Примеры (Python 3.0+)
Результат выполнения приведенного выше примера:
已更新字符串 : Hello Example!
Управляющие символы Python
Когда в символах нужны специальные символы, Python использует обратную косую черту\для экранирования символов. Как в таблице ниже:
| Экранирующий символ | Описание | Пример |
|---|---|---|
| \ (в конце строки) | Продолжение строки |
>>> print("line1 \
... line2 \
... line3")
line1 line2 line3
>>>
|
| \\ | Символ обратной косой черты |
>>> print("\\")
\
|
| \' | Одинарная кавычка |
>>> print('\'')
'
|
| \" | Двойная кавычка |
>>> print("\"")
"
|
| \a | Звонок |
>>> print("\a")Компьютер издаёт звук после выполнения. |
| \b | Возврат на один символ |
>>> print("Hello \b World!")
Hello World!
|
| \000 | Пусто |
>>> print("\000")
>>>
|
| \n | Перевод строки |
>>> print("\n")
>>>
|
| \v | Вертикальная табуляция |
>>> print("Hello \v World!")
Hello
World!
>>>
|
| \t | Горизонтальная табуляция |
>>> print("Hello \t World!")
Hello World!
>>>
|
| \r | Возврат каретки перемещает\rсодержимое после него в начало строки и заменяет символы в начале один за другим, пока\rсодержимое после него не будет полностью заменено. |
>>> print("Hello\rWorld!")
World!
>>> print('google example taobao\r123456')
123456 example taobao
|
| \f | Подача страницы |
>>> print("Hello \f World!")
Hello
World!
>>>
|
| \yyy | Восьмеричное число, y представляет символы от 0 до 7, например: \012 обозначает новую строку. |
>>> print("\110\145\154\154\157\40\127\157\162\154\144\41")
Hello World!
|
| \xyy | Шестнадцатеричное число, начинается с \x, y представляет символ, например: \x0a обозначает новую строку. |
>>> print("\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21")
Hello World!
|
| \other | Остальные символы выводятся в обычном формате. |
Используйте\r для реализации прогресса в процентах:
Примеры
for i in range(101): # Добавить графику индикатора выполнения и процент
bar = '[' + '=' * (i // 2) + ' ' * (50 - i // 2) + ']'
print(f"\r{bar} {i:3}%", end='', flush=True)
time.sleep(0.05)
print()
В следующем примере мы использовали различные escape-символы, чтобы продемонстрировать эффекты одинарных кавычек, новой строки, табуляции, возврата на одну позицию, перевода страницы, ASCII, двоичных, восьмеричных и шестнадцатеричных чисел:
Примеры
print("Hello, world!\nHow are you?") # Вывод: Hello, world!
# Как дела?
print("Привет, мир!\tКак дела?") # Вывод: Привет, мир! Как дела?
print("Привет,\b мир!") # Вывод: Привет мир!
print("Привет,\f мир!") # Вывод:
# Привет,
# мир!
print("Значение ASCII для A:", ord('A')) # Вывод: Значение ASCII для A: 65
print("\x41 — это ASCII-код символа A) # Вывод: A — это ASCII-код символа A
decimal_number = 42
binary_number = bin(decimal_number) # Convert decimal to binary
print('Преобразовано в двоичную систему:', binary_number) # Преобразовано в двоичную систему: 0b101010
octal_number = oct(decimal_number) # Преобразовать десятичное число в восьмеричное
print('Преобразовано в восьмеричную систему:', octal_number) # Преобразовано в восьмеричную систему: 0o52
hexadecimal_number = hex(decimal_number) # Преобразовать десятичное число в шестнадцатеричное
print('Преобразовано в шестнадцатеричную систему:', hexadecimal_number) # Преобразовано в шестнадцатеричную систему: 0x2a
Операторы строк Python
В таблице ниже переменная a в примерах имеет строковое значение "Hello", а переменная b имеет значение "Python":
| Operator | Описание | Пример |
|---|---|---|
| + | Конкатенация строк | a + b вывод: HelloPython |
| * | Повторный вывод строки | a*2 вывод: HelloHello |
| [] | Получение символов в строке по индексу | ae |
| [ : ] | Извлечь часть строки, следуялевому закрытому и правому открытомуправилу; str[0:2] не включает 3-й символ. | a[1:4] выводell |
| in | Оператор принадлежности — возвращает True, если строка содержит заданный символ | 'H' in aРезультат вывода True |
| not in | Оператор принадлежности — возвращает True, если строка не содержит заданный символ | 'M' not in aРезультат вывода True |
| r/R | Необработанная строка — необработанные строки: все строки используются напрямую в соответствии с их буквальным значением, без экранирования специальных или непечатаемых символов. Необработанные строки имеют почти такой же синтаксис, как обычные строки, за исключением добавления буквыr(без учёта регистра) перед первой кавычкой строки. | print( r'\n' ) print( R'\n' ) |
| % | Форматирование строки | См. следующий раздел. |
Примеры (Python 3.0+)
Результат вывода приведённого выше примера:
a + b 输出结果: HelloPython a * 2 输出结果: HelloHello a[1] 输出结果: e a[1:4] 输出结果: ell H 在变量 a 中 M 不在变量 a 中 \n \n
Форматирование строк в Python
Python поддерживает форматированный вывод строк. Хотя это может включать очень сложные выражения, самое базовое использование — вставка значения в строку с помощью спецификатора формата строки %s.
В Python форматирование строк использует тот же синтаксис, что и функция sprintf в C.
Примеры (Python 3.0+)
Результат вывода приведённого выше примера:
我叫 小明 今年 10 岁!
Символы форматирования строк в Python:
| Символ | Описание |
|---|---|
| %c | Символ формата и его ASCII-код |
| %s | Форматирование строки |
| %d | Формат целого числа |
| %u | Формат беззнакового целого числа |
| %o | Формат беззнакового восьмеричного числа |
| %x | Формат беззнакового шестнадцатеричного числа |
| %X | Формат беззнакового шестнадцатеричного числа (верхний регистр) |
| %f | Форматирует числа с плавающей точкой, можно указать точность после десятичной точки |
| %e | Форматирует числа с плавающей точкой с использованием научной нотации |
| %E | Работает так же, как %e, форматирует числа с плавающей точкой с использованием научной нотации |
| %g | Сокращение для %f и %e |
| %G | Сокращение для %f и %E |
| %p | Форматирует адрес переменной в виде шестнадцатеричного числа |
Вспомогательные директивы оператора форматирования:
| Символ | Функция |
|---|---|
| * | Задают ширину или точность после десятичной точки |
| - | Используется для выравнивания по левому краю |
| + | Отображает знак плюс ( + ) перед положительными числами |
| <sp> | Отображает пробел перед положительными числами |
| # | Отображать '0' перед восьмеричными числами и '0x' или '0X' перед шестнадцатеричными числами (в зависимости от того, используется 'x' или 'X') |
| 0 | Дополняет отображаемое число символом '0' вместо пробела по умолчанию |
| % | '%%' выводит один '%' |
| (var) | Сопоставленная переменная (аргумент словаря) |
| m.n. | m — минимальная общая ширина для отображения, n — количество цифр после десятичной точки (если доступно) |
Начиная с Python 2.6, была добавлена новая функция форматирования строкstr.format(), которая расширяет функциональность форматирования строк.
Тройные кавычки в Python
Тройные кавычки Python позволяют строке занимать несколько строк; строка может содержать символы новой строки, табуляции и другие специальные символы. Пример приведён ниже:
Примеры (Python 3.0+)
Вывод приведенного выше примера:
这是一个多行字符串的实例 多行字符串可以使用制表符 TAB ( ). 也可以使用换行符 [ ]。
Тройные кавычки избавляют программистов от трясины кавычек и специальных строк, сохраняя небольшой блок строки в так называемом формате WYSIWYG (What You See Is What You Get) от начала до конца.
Типичный случай использования — когда нужен блок HTML или SQL. В этот момент использование конкатенации строк и специального экранирования строк было бы очень громоздким.
f-строка
f-строка была добавлена в Python 3.6 и более поздних версиях. Она называется литеральной форматированной строкой и представляет собой новый синтаксис форматирования строк.
Раньше мы использовали знак процента (%):
Примеры
>>> 'Hello %s' % name
'Hello Example'
f-stringФорматированная строка начинается сf, за которой следует строка. Выражения в строке заключаются в фигурные скобки {}. Они заменяются вычисленным значением переменной или выражения. Пример:
Примеры
>>> f'Hello {name}' # Заменить переменную
'Hello Example'
>>> f'{1+2}' # Использовать выражение
'3'
>>> w = {'name': 'Example', 'url': 'www.example.com'}
>>> f'{w["name"]}: {w["url"]}'
'Example: www.example.com'
Использование этого метода явно проще; больше не нужно решать, использовать %s или %d.
В Python 3.8 и более поздних версиях можно использовать=символ для объединения выражения операции и его результата:
Примеры
>>> print(f'{x+1}') # Python 3.6
2
>>> x = 1
>>> print(f'{x+1=}') # Python 3.8
x+1=2
Строки Unicode
В Python 2 обычные строки хранятся как 8-битные коды ASCII, тогда как строки Unicode хранятся как 16-битные строки Unicode, которые могут представлять больше наборов символов. Используемый синтаксис — добавление префикса перед строкойu。
В Python 3 все строки являются строками Unicode.
Встроенные строковые функции Python
Обычно используемые встроенные строковые методы Python перечислены ниже:
| Нет. | Метод и описание |
|---|---|
| 1 | capitalize() |
| 2 | Возвращает строку, выровненную по центру заданной ширины. fillchar — символ заполнения, по умолчанию пробел. |
| 3 | count(str, beg= 0,end=len(string)) Возвращает количество вхождений str в строку. Если указаны beg или end, возвращает количество вхождений str в указанном диапазоне. |
| 4 | bytes.decode(encoding="utf-8", errors="strict") В Python 3 нет метода decode, но мы можем использовать метод decode() объекта bytes для декодирования заданного объекта bytes. Этот объект bytes может быть закодирован и возвращён с помощью str.encode(). |
| 5 | encode(encoding='UTF-8',errors='strict') Кодирует строку в формате кодировки, указанном в encoding. Если возникает ошибка, по умолчанию вызывается исключение ValueError, если только errors не указан как 'ignore' или 'replace'. |
| 6 | endswith(suffix, beg=0, end=len(string)) |
| 7 | Преобразует символы табуляции в строке в пробелы. По умолчанию количество пробелов для символа табуляции равно 8. |
| 8 | find(str, beg=0, end=len(string)) Определяет, содержится ли str в строке. Если указан диапазон beg и end, проверяет наличие в указанном диапазоне. Если содержится, возвращает значение начального индекса; в противном случае возвращает -1. |
| 9 | index(str, beg=0, end=len(string)) То же, что и метод find(), но вызывает исключение, если str отсутствует в строке. |
| 10 | Проверяет, состоит ли строка из букв и цифр, т. е. все символы в строке являются буквами или цифрами. Если строка содержит хотя бы один символ и все символы являются буквами или цифрами, возвращает True; в противном случае возвращает False. |
| 11 | Возвращает True, если строка содержит хотя бы один символ и все символы являются буквами или китайскими иероглифами; в противном случае возвращает False. |
| 12 | Возвращает True, если строка содержит только цифры; в противном случае возвращает False. |
| 13 | Возвращает True, если строка содержит хотя бы один символ, чувствительный к регистру, и все эти (чувствительные к регистру) символы являются строчными; в противном случае возвращает False. |
| 14 | Возвращает True, если строка содержит только числовые символы; в противном случае возвращает False. |
| 15 | Возвращает True, если строка содержит только пробельные символы; в противном случае возвращает False. |
| 16 | Возвращает True, если строка имеет регистр заголовка (см. title()); в противном случае возвращает False. |
| 17 | Возвращает True, если строка содержит хотя бы один символ, различающийся по регистру, и все эти (различающиеся по регистру) символы являются заглавными; в противном случае возвращает False. |
| 18 | Использует указанную строку в качестве разделителя, чтобы объединить все элементы (их строковые представления) в seq в новую строку. |
| 19 | Возвращает длину строки. |
| 20 | Возвращает новую строку, в которой исходная строка выравнивается по левому краю и дополняется fillchar до длины width. По умолчанию fillchar — пробел. |
| 21 | Преобразует все прописные символы в строке в строчные. |
| 22 | Удаляет пробелы или указанные символы в левой части строки. |
| 23 | Создаёт таблицу преобразования для сопоставления символов. В простейшей форме вызова с двумя параметрами первый параметр — строка, представляющая символы для преобразования, а второй параметр — также строка, представляющая цель преобразования. |
| 24 | Возвращает наибольшую букву в строке str. |
| 25 | Возвращает наименьшую букву в строке str. |
| 26 | Заменяет old в строке на new. Если max указан, замена выполняется не более max раз. |
| 27 | rfind(str, beg=0,end=len(string)) Аналогична функции find(), но ищет справа. |
| 28 | rindex( str, beg=0, end=len(string)) Аналогична index(), но начинает поиск справа. |
| 29 | Возвращает новую строку, в которой исходная строка выровнена по правому краю и дополнена fillchar (по умолчанию пробелом) до длины width. |
| 30 | Удаляет пробелы или указанные символы в конце строки. |
| 31 | split(str="", num=string.count(str)) Разбивает строку, используя str в качестве разделителя. Если num указан, извлекается только num+1 подстрок. |
| 32 | Разбивает по строкам ('\r', '\r\n', '\n') и возвращает список, содержащий каждую строку как элемент. Если параметр keepends равен False, символы новой строки не включаются; если True, символы новой строки сохраняются. |
| 33 | startswith(substr, beg=0,end=len(string)) Проверяет, начинается ли строка с указанной подстроки substr. Если да, возвращает True; в противном случае возвращает False. Если указаны beg и end, проверяет в указанном диапазоне. |
| 34 | Выполняет lstrip() и rstrip() для строки. |
| 35 | Преобразует прописные буквы в строчные, а строчные в прописные в строке. |
| 36 | Возвращает строку в "титульном регистре" (titlecased), то есть все слова начинаются с заглавной буквы, а остальные буквы строчные (см. istitle()). |
| 37 | translate(table, deletechars="") Преобразует символы строки согласно таблице, заданной параметром table (содержащей 256 символов). Символы, которые нужно отфильтровать, помещаются в параметр deletechars. |
| 38 | Преобразует строчные буквы в строке в прописные. |
| 39 | Возвращает строку длиной width, в которой исходная строка выровнена по правому краю и дополнена 0 в начале. |
| 40 | Проверяет, содержит ли строка только десятичные символы. Если да, возвращает true; в противном случае возвращает false. |