English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве вы узнаете, как создавать, форматировать, изменять и удалять строки на Python. Кроме того, вам будут представлены различные операции и функции с использованием строк.
Строка - это последовательность символов.
Символы - это просто знаки. Например, английский язык имеет 26 символов.
Компьютеры обрабатывают не символы, а числа (бинарные). Даже если вы видите символы на экране, внутри они хранятся и обрабатываются как комбинация 0 и 1.
Конвертация символов в числа называется кодировкой, а обратный процесс - декодированием. ASCII и Unicode - это некоторые из常用的 кодировок.
В Python строки являются последовательностью Unicode-символов. Введение Unicode включает все символы всех языков и приносит единую кодировку. Вы можете узнать больше здесьПознакомьтесь с Unicode.
Строки можно создавать, заключая символы в одиночные или двойные кавычки. В 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 выполняет операцию объединения. Просто пишите два текстовых строки вместе, и они также могут быть объединены.
* Оператор может быть использован для повторения строки определенное количество раз.
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
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))
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支持的所有转义序列的列表。
转义序列 | 描述 |
---|---|
\newline | 反斜杠和换行符被忽略 |
\\ | 反斜杠 |
\' | 单引号 |
\" | 双引号 |
\a | ASCII铃声 |
\b | ASCII退格键 |
\f | ASCII换页 |
\n | ASCII换行 |
\r | ASCII回车 |
\t | ASCII水平制表符 |
\v | ASCII垂直制表符 |
\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
与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
Объекты строк имеют множество доступных методов. Одним из них является метод 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'