Python3 Строки

Строки — наиболее часто используемый тип данных в Python. Мы можем использовать кавычки ('или") для создания строк.

Создать строку несложно — просто присвойте значение переменной. Например:

var1 = 'Hello World!' var2 = "Пример"

Python Доступ к значениям в строках

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

Python получает доступ к подстрокам с помощью квадратных скобок[]для извлечения строк. Синтаксис среза строк следующий:

variable[start index:end index]

Значения индексов начинаются с0как начального значения,-1— начальная позиция с конца.

Как в примере ниже:

Примеры (Python 3.0+)

#!/usr/bin/python3 var1 = 'Hello World!' var2 = "Пример" print ("var1[0]: ", var1[0]) print ("var2[1:5]: ", var2[1:5])

Результат выполнения приведенного выше примера:

var1[0]:  H
var2[1:5]:  unoo

Обновление строк Python

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

Примеры (Python 3.0+)

#!/usr/bin/python3 var1 = 'Hello World!' print ("Обновлённая строка:", var1[:6] + 'Пример!')

Результат выполнения приведенного выше примера:

已更新字符串 :  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 для реализации прогресса в процентах:

Примеры

import time

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!\'')  # Вывод: 'Hello, world!'

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+)

#!/usr/bin/python3 a = "Hello" b = "Python" print("a + b вывод:", a + b) print("a * 2 вывод:", a * 2) print("a", a[1]) print("a[1:4] вывод:", a[1:4]) if( "H" in a) : print("H содержится в переменной a") else : print("H не содержится в переменной a") if( "M" not in a) : print("M не содержится в переменной a") else : print("M содержится в переменной a") print (r'\n') print (R'\n')

Результат вывода приведённого выше примера:

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+)

#!/usr/bin/python3 print ("Меня зовут %s, мне %d лет!" % ('Сяо Мин', 10))

Результат вывода приведённого выше примера:

我叫 小明 今年 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+)

#!/usr/bin/python3 para_str = """Это пример многострочной строки Многострочные строки могут использовать табуляцию TAB (\t). Переносы строк также можно использовать [\n ]。 """ print (para_str)

Вывод приведенного выше примера:

这是一个多行字符串的实例
多行字符串可以使用制表符
TAB (    ).
也可以使用换行符 [ 
 ]。

Тройные кавычки избавляют программистов от трясины кавычек и специальных строк, сохраняя небольшой блок строки в так называемом формате WYSIWYG (What You See Is What You Get) от начала до конца.

Типичный случай использования — когда нужен блок HTML или SQL. В этот момент использование конкатенации строк и специального экранирования строк было бы очень громоздким.

errHTML = ''' <HTML><HEAD><TITLE> Friends CGI Demo</TITLE></HEAD> <BODY><H3>ERROR</H3> <B>%s</B><P> <FORM><INPUT TYPE=button VALUE=Back ONCLICK="window.history.back()"></FORM> </BODY></HTML> ''' cursor.execute(''' CREATE TABLE users ( login VARCHAR(8), uid INTEGER, prid INTEGER) ''')

f-строка

f-строка была добавлена в Python 3.6 и более поздних версиях. Она называется литеральной форматированной строкой и представляет собой новый синтаксис форматирования строк.

Раньше мы использовали знак процента (%):

Примеры

>>> name = 'Example'
>>> 'Hello %s' % name
'Hello Example'

f-stringФорматированная строка начинается сf, за которой следует строка. Выражения в строке заключаются в фигурные скобки {}. Они заменяются вычисленным значением переменной или выражения. Пример:

Примеры

>>> name = 'Example'
>>> 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 и более поздних версиях можно использовать=символ для объединения выражения операции и его результата:

Примеры

>>> x = 1
>>> 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

center(width, fillchar)

Возвращает строку, выровненную по центру заданной ширины. 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))
Проверяет, заканчивается ли строка суффиксом suffix. Если указаны beg или end, проверяет, заканчивается ли она суффиксом в указанном диапазоне. Если да, возвращает True; в противном случае возвращает False.

7

expandtabs(tabsize=8)


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

find(str, beg=0, end=len(string))


Определяет, содержится ли str в строке. Если указан диапазон beg и end, проверяет наличие в указанном диапазоне. Если содержится, возвращает значение начального индекса; в противном случае возвращает -1.
9

index(str, beg=0, end=len(string))


То же, что и метод find(), но вызывает исключение, если str отсутствует в строке.
10

isalnum()


Проверяет, состоит ли строка из букв и цифр, т. е. все символы в строке являются буквами или цифрами. Если строка содержит хотя бы один символ и все символы являются буквами или цифрами, возвращает True; в противном случае возвращает False.
11

isalpha()


Возвращает True, если строка содержит хотя бы один символ и все символы являются буквами или китайскими иероглифами; в противном случае возвращает False.
12

isdigit()


Возвращает True, если строка содержит только цифры; в противном случае возвращает False.
13

islower()


Возвращает True, если строка содержит хотя бы один символ, чувствительный к регистру, и все эти (чувствительные к регистру) символы являются строчными; в противном случае возвращает False.
14

isnumeric()


Возвращает True, если строка содержит только числовые символы; в противном случае возвращает False.
15

isspace()


Возвращает True, если строка содержит только пробельные символы; в противном случае возвращает False.
16

istitle()


Возвращает True, если строка имеет регистр заголовка (см. title()); в противном случае возвращает False.
17

isupper()


Возвращает True, если строка содержит хотя бы один символ, различающийся по регистру, и все эти (различающиеся по регистру) символы являются заглавными; в противном случае возвращает False.
18

join(seq)


Использует указанную строку в качестве разделителя, чтобы объединить все элементы (их строковые представления) в seq в новую строку.
19

len(string)


Возвращает длину строки.
20

ljust(width[, fillchar])


Возвращает новую строку, в которой исходная строка выравнивается по левому краю и дополняется fillchar до длины width. По умолчанию fillchar — пробел.
21

lower()


Преобразует все прописные символы в строке в строчные.
22

lstrip()


Удаляет пробелы или указанные символы в левой части строки.
23

maketrans()


Создаёт таблицу преобразования для сопоставления символов. В простейшей форме вызова с двумя параметрами первый параметр — строка, представляющая символы для преобразования, а второй параметр — также строка, представляющая цель преобразования.
24

max(str)


Возвращает наибольшую букву в строке str.
25

min(str)


Возвращает наименьшую букву в строке str.
26

replace(old, new [, max])


Заменяет old в строке на new. Если max указан, замена выполняется не более max раз.
27

rfind(str, beg=0,end=len(string))


Аналогична функции find(), но ищет справа.
28

rindex( str, beg=0, end=len(string))


Аналогична index(), но начинает поиск справа.
29

rjust(width,[, fillchar])


Возвращает новую строку, в которой исходная строка выровнена по правому краю и дополнена fillchar (по умолчанию пробелом) до длины width.
30

rstrip()


Удаляет пробелы или указанные символы в конце строки.
31

split(str="", num=string.count(str))


Разбивает строку, используя str в качестве разделителя. Если num указан, извлекается только num+1 подстрок.
32

splitlines([keepends])


Разбивает по строкам ('\r', '\r\n', '\n') и возвращает список, содержащий каждую строку как элемент. Если параметр keepends равен False, символы новой строки не включаются; если True, символы новой строки сохраняются.
33

startswith(substr, beg=0,end=len(string))


Проверяет, начинается ли строка с указанной подстроки substr. Если да, возвращает True; в противном случае возвращает False. Если указаны beg и end, проверяет в указанном диапазоне.
34

strip([chars])


Выполняет lstrip() и rstrip() для строки.
35

swapcase()


Преобразует прописные буквы в строчные, а строчные в прописные в строке.
36

title()


Возвращает строку в "титульном регистре" (titlecased), то есть все слова начинаются с заглавной буквы, а остальные буквы строчные (см. istitle()).
37

translate(table, deletechars="")


Преобразует символы строки согласно таблице, заданной параметром table (содержащей 256 символов). Символы, которые нужно отфильтровать, помещаются в параметр deletechars.
38

upper()


Преобразует строчные буквы в строке в прописные.
39

zfill (width)


Возвращает строку длиной width, в которой исходная строка выровнена по правому краю и дополнена 0 в начале.
40

isdecimal()


Проверяет, содержит ли строка только десятичные символы. Если да, возвращает true; в противном случае возвращает false.
Другие расширения