English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основные курсы Python

Управление потоком в Python

Функции в Python

Типы данных Python

Файловые операции в Python

Объекты и классы в Python

Даты и время в Python

Продвинутые знания Python

Руководство по Python

Строки (String) в Python

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

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

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

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

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

Конвертация символов в числа называется кодировкой, а обратный процесс - декодированием. ASCII и Unicode - это некоторые из常用的 кодировок.

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

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

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

# Все это эквивалентно
my_string = 'Привет'
print(my_string)
my_string = "Привет"
print(my_string)
my_string = '''Привет'''
print(my_string)
# Три кавычки могут использоваться для многострочного расширения
my_string = """Привет, welcome to
           мир Python"""
print(my_string)

Когда вы запустите этот программ, вывод будет:

Привет
Привет
Привет
Привет, welcome to
           мир Python

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

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

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

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

str = 'oldtoolbag.com'
print('str = ', str)
# Первый символ
print('str[0] = ', str[0])
# Последний символ
print('str[-1] = ', str[-1])
# Разрез со второго по пятый символ
print('str[1:5] = ', str[1:5])
# Разрез с шестого по предпоследний символ
print('str[5:-2] = ', str[5:-2])

Результат вывода:

str = oldtoolbag.com
str[0] = n
str[-1] = m
str[1:5] = hooo
str[5:-2] = .c

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

# Индексы должны быть в диапазоне
>>> my_string[15]  
...
IndexError: индекс строки выходит за пределы диапазона
# Индексы должны быть целыми числами
>>> my_string[1.5] 
...
TypeError: индексы строки должны быть целыми числами

Через визуализацию индексов между элементами можно最好 всего представить срезы, как показано ниже.

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

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

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

>>> my_string = 'oldtoolbag.com'
>>> my_string[5] = 'a'
...
TypeError: объект 'str' не поддерживает присваивание элемента
>>> my_string = 'Python'
>>> my_string
'Python'

Мы не можем удалить или удалить символы из строки. Но с помощью ключевого слова del можно полностью удалить строку.

>>> del my_string[1]
...
TypeError: объект 'str' не поддерживает удаление элемента
>>> del my_string
>>> my_string
...
NameError: имя 'my_string' не определено

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

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

Объединение двух или более строк

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

Оператор + в Python выполняет операцию объединения. Просто пишите два текстовых строки вместе, и они также могут быть объединены.

* Оператор может быть использован для повторения строки определенное количество раз.

str1 = 'Hello'
str2 = 'World!'
# using +
print('str1 + str2 =', str1 + str2)
# using *
print('str1 * 3 =', str1 * 3)

Если написать два текстовых строки вместе, они также будут объединены, как+Оператор также может быть использован для объединения их вместе.

Если нужно соединить строки на разных строках, можно использовать скобки.

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

Прогулка по строке

ИспользованиеЦикл forWe can iterate over a string. This is an example of counting the number of 'l' in a string.

count = 0
for letter in 'Hello World':
    if(letter == 'l'):
        count += 1
print(count, 'letters found')

Тест на членство строки

We can use the in keyword to test if a substring exists in a string.

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

Использование встроенных функций Python

You can use various built-in functions of sequence and string.

Some commonly used are enumerate() and len(). The enumerate() function returns an enumeration object. It contains all items of the string in the form of a pair. This is very useful for iteration.

Similarly, len() returns the length of the string (number of characters).

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

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

转义序列

If we want to print a text - he said: "What's there?" - we cannot use single or double quotes. This will result in a SyntaxError text itself containing single and double quotes.

>>> print("He said, "What's there?"")
...
SyntaxError: недопустимый синтаксис
>>> print('He said, "What's there?"')
...
SyntaxError: недопустимый синтаксис

One way to solve this problem is to use triple quotes. Additionally, we can use escape sequences.

Сquence escape begins with a backslash and is interpreted in different ways. If we use single quotes to represent a string, then all single quotes within the string must be escaped. The same goes for double quotes. This is the method of representing the above text.

# Использование трёх одиночных кавычек
print('''He said, "What's there?"''')
# 转义单引号
print('He said, "What\'s there?"')
# 转义双引号
print("He said, \"What's there?\"")

这是Python支持的所有转义序列的列表。

Python中的转义序列
转义序列描述
\newline反斜杠和换行符被忽略
\\反斜杠
\'单引号
\"双引号
\aASCII铃声
\bASCII退格键
\fASCII换页
\nASCII换行
\rASCII回车
\tASCII水平制表符
\vASCII垂直制表符
\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

原始字符串忽略转义序列

有时我们可能希望忽略字符串中的转义序列。为此,我们可以将其放置在字符串的前面r或R前面。这意味着这是一个原始字符串,并且其中的任何转义序列都将被忽略。

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

用format()方法格式化字符串

与string对象一起使用的format()方法非常通用,并且在格式化字符串方面功能非常强大。格式字符串包含大括号{}作为占位符或被替换的替换字段。

我们可以使用位置参数或关键字参数来指定顺序。

# 默认(隐式)顺序
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)

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

>>> # Форматирование целых чисел
>>> "Binary representation of {0} is {0:b}".format(12)
'Binary representation of 12 is 1100'
>>> # Форматирование плавающей точки
>>> "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('Значение x равно %3.2f' % x)
Значение x равно 12.35
>>> print('Значение x равно %3.4f' % x)
Значение x равно 12.3457

Обычные методы строк Python

Объекты строк имеют множество доступных методов. Одним из них является метод format(), упомянутый выше. parmi которых наиболее часто используемые: lower(), upper(), join(), split(), find(), replace() и т.д. Полный список всех методов можно найти здесьВнутренние методы обработки строк в Python.

>>> 'w3codebox'.lower()
w3codebox
>>> 'w3codebox'.upper()
w3codebox
>>> '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'