Поиск символа в строке python: Работа со строками python на примерах ~ PythonRu
Проверка вхождения одной строки в другую в Python
Как проверить, содержит ли строка Python другую строку?
Проверка, содержит ли строка какую-нибудь другую строку, это одна из самых распространенных операций, осуществляемых разработчиками.
Если вы раньше (до перехода на Python) писали код, скажем, на Java, для подобной проверки вы могли использовать метод contains.
В Python есть два способа достичь той же
цели.
1. Использование оператора
in
Самый простой способ проверить, содержится ли в строке другая строка, это использовать оператор Python in
.
Давайте рассмотрим пример.
>>> str = "Messi is the best soccer player" >>> "soccer" in str True >>> "football" in str False
Как видите, оператор in
возвращает True
, если указанная подстрока является частью строки. В противном случае он возвращает False
.
Этот метод очень простой, понятный,
читаемый и идиоматичный.
2. Использование метода find
Также для проверки вхождения одной строки в другую можно использовать строковый метод find
.
В отличие от оператора, возвращающего булево значение, метод find
возвращает целое число.
Это число является по сути индексом начала подстроки, если она есть в указанной строке. Если этой подстроки в строке не содержится, метод возвращает -1
.
Давайте посмотрим, как работает метод find
.
>>> str = "Messi is the best soccer player" >>> str.find("soccer") 18 >>> str.find("Ronaldo") -1 >>> str.find("Messi") 0
Что особенно хорошо в применении этого
метода — вы можете при желании ограничить
пределы поиска, указав начальный и
конечный индекс.
Например:
>>> str = "Messi is the best soccer player" >>> str.find("soccer", 5, 25) 18 >>> str.find("Messi", 5, 25) -1
Обратите внимание, что для подстроки «Messi» метод вернул -1
. Это произошло потому, что мы ограничили поиск в строке промежутком символов с индексами от 5-го до 25-го.
Более сложные способы
Представьте на минутку, что в Python нет
никаких встроенных функций или методов,
позволяющих проверить, входит ли одна
строка в другую. Как бы вы написали
функцию для этой цели?
Можно использовать брутфорс-подход
и на каждой возможной позиции в строке
проверять, начинается ли там искомая
подстрока. Но для длинных строк этот
процесс будет очень медленным.
Есть лучшие алгоритмы поиска строк. Если вы хотите углубиться в эту тему, можем порекомендовать статью «Rabin-Karp and Knuth-Morris-Pratt Algorithms». Также вам может пригодиться статья «Поиск подстроки» в Википедии.
Если вы прочитаете указанные статьи,
у вас может родиться закономерный
вопрос: так какой же алгоритм используется
в Python?
Для поиска ответов на подобные вопросы практически всегда нужно углубиться в исходный код. В этом плане вам повезло: Python это технология с открытым кодом. Давайте же в него заглянем.
Как удачно, что разработчики прокомментировали свой код! Теперь нам совершенно ясно, что метод find
использует смесь алгоритмов Бойера-Мура и Бойера-Мура-Хорспула.
Заключение
Для проверки, содержится ли указанная строка в другой строке, в Python можно использовать оператор in
или метод find
.
Оператор in
возвращает True
, если указанная подстрока является частью другой строки. В противном случае он возвращает False
.
Метод find
возвращает индекс начала подстроки в строке, если эта подстрока там есть, или -1
— если подстрока не найдена.
CPython использует для поиска строк
комбинацию алгоритмов Бойера-Мура и
Бойера-Мура-Хорспула.
Python: поиск в строке | Python
В сегодняшнем посте разбираем поиск подстроки в строке. Задачи стоят элементарнейшие. В отличие от задача по преобразованию строки в число, задачи по поиску решаются в python с помощью встроенных функций.
Для решения наших задач определим строки:
# исходная строка string = "Some string for example." # подстрока, которая явно входит в исходную строку substring = "string" # подстрока, которая явно не ходит в исходную строку other_substring = "other string"
Задача №1 — узнать, входит ли подстрока в строку. Операция substring in string вернет нам в результате логический ответ: True в случае, если substring входит в строку, и False в случае, если не входит. Для наглядности приведу ниже пример.
# Для начала хотим узнать, входит ли подстрока в строку if substring in string: print ("Подстрока "%s" входит в строку "%s"" % (substring, string)) else: print ("Подстрока "%s" не входит в строку "%s"" % (substring, string)) # Та же самая процедура с другой подстрокой if other_substring in string: print ("Подстрока "%s" входит в строку "%s"" % (other_substring, string)) else: print ("Подстрока "%s" не входит в строку "%s"" % (other_substring, string))
Задача №2 — узнать позицию вхождения подстроки в строку.
Данную задачу решаем с помощью функции find(self, sub[, start[, end]]). Сразу перейдем к примерам:
# Узнаем, с какой позиции подстрока входит в строку print(string.find(substring)) # 5 # Ищем, начиная с позиции 20 print(string.find(substring, 20)) # 44 # Ищем в диапазоне позиций 20 - 30 print(string.find(substring, 20, 30)) # -1 # И смотрим на результат, если подстрока не входит в строку print(string.find(other_substring)) # -1
Далее стоит перед нами задача №3 — вычислить количество вхождений подстроки в строку. С ней легко справляется функция count(self, sub[, start[, end]])
# Нам интересно количество вхождений подстроки в строку print(string.count(substring)) # 2
Задача №4 — проверить входит ли подстрока в строку без учета регистра. Для этого мы воспользуемся функцией преобразования символов строки в нижний/верхний регистр и применим к примеру №1.
# Для начала хотим узнать, входит ли подстрока в строку if substring.lower() in string.lower(): print ("Подстрока "%s" входит в строку "%s"" % (substring, string)) else: print ("Подстрока "%s" не входит в строку "%s"" % (substring, string)) # Та же самая процедура с другой подстрокой if other_substring.upper() in string.upper(): print ("Подстрока "%s" входит в строку "%s"" % (other_substring, string)) else: print ("Подстрока "%s" не входит в строку "%s"" % (other_substring, string))
На этом я остановлюсь, пожалуй. Если возникли вопросы, пожелания или предложения, то оставляйте комментарии. Отвечу всем.
Python | Работа со строками
Работа со строками
Последнее обновление: 02.05.2017
Строка представляет последовательность символов в кодировке Unicode. И мы можем обратиться к отдельным символам строки по индексу в квадратных скобках:
string = "hello world" c0 = string[0] # h print(c0) c6 = string[6] # w print(c6) c11 = string[11] # ошибка IndexError: string index out of range print(c11)
Индексация начинается с нуля, поэтому первый символ строки будет иметь индекс 0. А если мы попытаемся обратиться к индексу, которого нет в строке, то
мы получим исключение IndexError. Например, в случае выше длина строки 11 символов, поэтому ее символы будут иметь индексы от 0 до 10.
Чтобы получить доступ к символам, начиная с конца строки, можно использовать отрицательные индексы. Так, индекс -1 будет представлять последний символ, а -2 — предпоследний символ и так далее:
string = "hello world" c1 = string[-1] # d print(c1) c5 = string[-5] # w print(c5)
При работе с символами следует учитывать, что строка — это неизменяемый (immutable) тип, поэтому если мы попробуем изменить какой-то отдельный символ строки, то мы получим
ошибку, как в следующем случае:
string = "hello world" string[1] = "R"
Мы можем только полностью переустановить значение строки, присвоив ей другое значение.
Получение подстроки
При необходимости мы можем получить из строки не только отдельные символы, но и подстроку. Для этого используется следующий синтаксис:
string[:end]
: извлекается последовательность символов начиная с 0-го индекса по индекс endstring[start:end]
: извлекается последовательность символов начиная с индекса start по индекс endstring[start:end:step]
: извлекается последовательность символов начиная с индекса start по индекс end через шаг step
Используем все варианты получения подстроки:
string = "hello world" # с 0 до 5 символа sub_string1 = string[:5] print(sub_string1) # hello # со 2 до 5 символа sub_string2 = string[2:5] print(sub_string2) # llo # со 2 по 9 символ через один символ sub_string3 = string[2:9:2] print(sub_string3) # lowr
Функции ord и len
Поскольку строка содержит символы Unicode, то с помощью функции ord() мы можем получить числовое значение для символа в кодировке Unicode:
print(ord("A")) # 65
Для получения длины строки можно использовать функцию len():
string = "hello world" length = len(string) print(length) # 11
Поиск в строке
С помощью выражения term in string
можно найти подстроку term в строке string. Если подстрока найдена, то выражение вернет значение
True
, иначе возвращается значение False
:
string = "hello world" exist = "hello" in string print(exist) # True exist = "sword" in string print(exist) # False
Перебор строки
С помощью цикла for можно перебрать все символы строки:
string = "hello world" for char in string: print(char)
Python | Найти положение символа в заданной строке
По заданной строке и символу ваша задача — найти первую позицию символа в строке. Эти типы задач являются очень конкурентным программированием, где вам нужно определить положение символа в строке.
Давайте обсудим несколько методов решения проблемы.
Метод № 1: Использование наивного метода
|
Выход:
initial_string : abcdef character_to_find : b Character b is present at 2
Метод № 2: Использование find
Этот метод возвращает -1, если символ отсутствует.
|
Выход:
initial_strings : abcdef xyze character_to_find : b Character b in string abcdef is present at 2 No such charater available in string xyze
Метод № 3: Использование индекса ()
Этот метод вызывает ValueError в случае, если символ отсутствует
|
Выход:
initial_strings : xyze character_to_find : b No such charater available in string xyze
Рекомендуемые посты:
Python | Найти положение символа в заданной строке
0.00 (0%) 0 votes
Проверьте, содержит ли строка подстроку в Python
В Python есть несколько методов для работы со строками. В этой статье мы покажем вам, как узнать, содержит ли строка подстроку.
Как проверить, содержит ли строка подстроку
Независимо от того, нужно ли проверять строку в слове, букве или фразе, в Python вы можете легко использовать встроенные методы и проверку строки в операторе.
Стоит отметить, что вы получите логическое значение (True или False) или целое число, чтобы указать, содержит ли строка то, которую вы искали. Вы узнаете об этом больше, когда мы покажем код ниже.
Давайте посмотрим на возможные решения, с помощью которых вы можете найти, содержит ли строка конкретное слово/букву.
Способ 1. Использование оператора «in»
Предположим, у вас уже есть строка «str», вот как она будет выглядеть:
stringexample = "terminator" "ter" in str
Выход для этого будет «True», потому что строка содержит то, что мы искали. Таким образом, если вы ищете что-то, а в строке этого нет, вы получите «False» в качестве вывода.
Если вы все еще не уверены, позвольте нам написать небольшую программу, чтобы объяснить то же самое:
stringexample = "Terminator" substring = "ter" if substring in stringexample: print ("Мы нашли строку!") else: print ("Строка не найдена!")
Выход для вышеуказанного кода будет:
Мы нашли строку!
Метод 2: Использование метода поиска
Если вы хотите использовать метод для поиска подстроки, вы можете использовать функция find(). Вот как это сделать:
stringexample = "kiki" stringexample.find("ki")
Выход для этого будет 0.
Причина вывода в том, что эта функция возвращает самое низкое значение индекса, когда найдена подстрока.
Если она возвращает -1, это означает, что строка не содержит этой подстроки.
Вот небольшая программа, чтобы показать это в действии:
stringexample = "Kiki" substring = "ki" if stringexample.find("ki") != -1: print ("Мы нашли строку!") else: print ("Строка не найдена!")
Выход для вышеуказанного кода будет:
Мы нашли строку!
Метод 3: Использование метода Contains
__contains __ () – еще одна функция, помогающая проверить, содержит ли строка определенную букву/слово.
Вот как вы можете использовать это:
stringexample = "kiki" stringexample.__contains__("k")
Вы получите вывод как True/False. Для приведенного выше фрагмента кода вы получите вывод в виде:
True
Обратите внимание, что при написании метода используются 4 символа подчеркивания (2 перед словом и 2 после).
Вот программа, чтобы объяснить то же самое:
stringexample = "kiki" if stringexample.__contains__("k") == True: print ("Да, нашел подстроку!") else: print ("Строка не найдена!")
В этом случае вывод:
Да, нашел подстроку!
Завершение
Если вы решите использовать алгоритм поиска с нуля без использования функций или вышеупомянутых решений, вы можете взглянуть на некоторые алгоритмы поиска строк, чтобы узнать о них больше.
Если у вас есть вопросы или предложения, пожалуйста, дайте нам знать.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Строки в Python — Программирование с нуля
В этом уроке вы научитесь создавать, форматировать, изменять и удалять строки в Python. Также вы познакомитесь с различными строковыми операциями и функциями.
Что такое строка в Python?
Строка в Python — это обычная последовательность символов (букв, цифр, знаков препинания).
Компьютеры не имеют дело с символами, они имеют дело с числами (в двоичной системе). Даже если вы видите символы на вашем экране, внутри памяти компьютера он хранится и обрабатываются как последовательность нулей и единиц.
Преобразование символа в число называется кодированием, а обратный процесс — декодированием. ASCII и Unicode — наиболее популярные из кодировок, которые используются для кодирования и декодирования данных.
В Python, строка — это последовательность символов Unicode. Юникод был введен для включения каждого символа на всех языках и обеспечения единообразия в кодировании.
Как создать строку в Python?
Строки можно создавать, заключая символы в одинарные или двойные кавычки. Даже тройные кавычки могут использоваться в Python, но они обычно используются для представления многострочных строк и строк документации (docsrting).
# Все способы ниже создают строку my_string = 'Hello' print(my_string) my_string = "Hello" print(my_string) my_string = '''Hello''' print(my_string) # Содержимое внутри тройных кавычек может переноситься на новые строки my_string = """Hello, Python""" print(my_string)
Как получить доступ к символам в строке?
Мы можем получить доступ к отдельным символам, используя индексирование, и диапазон символов, используя срезы. Индекс начинается с 0. Попытка получить доступ к символу вне диапазона индекса вызовет ошибку IndexError. Индекс должен быть целым числом. Мы не можем использовать float или другие типы, это приведет к ошибке TypeError.
Python допускает отрицательную индексацию для своих последовательностей.
Индекс -1 относится к последнему элементу, -2 — ко второму с конца элементу и т.д. Мы можем получить доступ к ряду элементов в строке, используя оператор среза (двоеточие).
str = 'programfiles' 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])
Как изменить или удалить строку?
Строки относятся к неизменяемым типам данных (immutable type). Это означает, что элементы строки не могут быть изменены после того, как она была создана. Мы можем просто переназначить разные строки одному и тому же имени.
>>> my_string = 'programfiles' >>> 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 конкатенация выполняется оператором +.
Оператор * может использоваться для повторения строки в течение заданного числа раз.
str1 = 'Hello' str2 ='World!' # Конкатенация (объединение) строк print('str1 + str2 = ', str1 + str2) # Повторение строк print('str1 * 3 =', str1 * 3)
Перебор строк
Используя цикл for, мы можем перебирать строку.
Пример для подсчета количества символа ‘l’ в строке.
count = 0 for letter in 'Hello World': if(letter == 'l'): count += 1 print(count)
Проверка на наличие символа в строке
Мы можем проверить, существует ли подстрока в строке или нет, используя ключевое слово in.
>>> 'a' in 'programfiles' True >>> 'at' not in 'programfiles' False
Встроенные функции для работы со строками в Python
Различные встроенные функции, которые работают с последовательностью, работают также со строкой.
Некоторые из наиболее часто используемых — это enumerate() и len(). Функция enumerate() возвращает объект перечисления. Он содержит индекс и значение всех элементов в строке в виде пар.
Аналогично, len() возвращает длину (количество символов) строки.
str = 'program' # enumerate() list_enumerate = list(enumerate(str)) print('list(enumerate(str) = ', list_enumerate) # Подсчет кол-ва символов print('len(str) = ', len(str))
Форматирование строк в Python
Экранирование символов
Если внутри строки содержатся символы одинарной и двойной кавычки, то вне зависимости от того, какие кавычки мы использовали для создания строки — мы получим ошибку SyntaxError.
>>> print("She said, "What's there?"") ... SyntaxError: invalid syntax >>> print('She said, "What's there?"') ... SyntaxError: invalid syntax
Один из способов обойти эту проблему — использовать тройные кавычки. В качестве альтернативы мы можем использовать escape-последовательности или так называемое «экранирование символов».
Экранирующая последовательность начинается с обратной косой черты. Если мы используем одинарную кавычку для представления строки, все одинарные кавычки внутри строки должны быть экранированы. Аналогично обстоит дело с двойными кавычками. Вот как это можно сделать для представления приведенного выше текста.
# Тройные кавычки print('''He said, "What's there?"''') # Экранирование одинарных кавычек print('He said, "What\'s there?"') # Экранирование двойных кавычек print("He said, \"What's there?\"")
Использование метода format() для форматирования строк
Метод format(), доступный для строкового объекта, очень универсален и мощен в форматировании строк. Формат строки содержит фигурные скобки {} в качестве заполнителей или заменяющих полей, которые заменяются соответствующими значениями.
Мы можем использовать позиционные аргументы или ключевые аргументы, чтобы указать порядок.
# порядок по умолчанию default_order = "{}, {} and {}".format('John','Bill','Sean') print(default_order) # порядок задается вручную positional_order = "{1}, {0} and {2}".format('John','Bill','Sean') print(positional_order) # порядок задается аргументами keyword_order = "{s}, {b} and {j}".format(j='John',b='Bill',s='Sean') 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|’
Другие методы для работы со строками в Python
В языке Пайтон имеется большое кол-во различных методов для работы со строками. Если рассматривать их все в этой статье, то она может увеличить раза в три, а то и больше. Подробное описание работы всех методов можно найти в официальной документации к языку на сайте https://python.org/
Работа со строками в Python
В этой статье, мы познакомимся с базовыми основами работы со строками в Python. Строка (string) содержит в себе набор символов в кодировке ASCII и относится к неизменяемому типу данных.
Создание строки в Python
Для создания строки в Python существует три способа.
1) В одинарных кавычках (апострофы)
'одинарные кавычки в строке'
2) В двойных кавычках
"двойные кавычки в строке"
3) В тройных одинарных или двойных кавычках
'''строка_1
строка_2
строка_3'''
'строка_1\nстрока_2\nстрока_23\n' // после нажатия ENTER
print(‘строка_1\nстрока_2\nстрока_23\n’)
// выведет на экране
строка_1
строка_2
строка_3
Последний способ применяется для создания многострочной строки. Когда часть строки нужно перенести на новую строку. Внутри программы на месте переноса строк, Python добавляет символ \n. При выводе на экран многострочной строки, в параметрах print(‘строка_1\nстрока_2\nстрока_23\n’), передается вся эта конструкция.
Нельзя смешивать разновидности кавычек в одной строке, если открыли строку двойной кавычкой, то и закройте строку так же двойной кавычкой.
Обычно строки помещают в переменные, используя оператор присваивания.
new_str = 'переменной присвоили строку'
В Python допускается создание пустой строки.
empty = ''
Конкатенация строк в Python
Операция конкатенация (concatenate) объединяет несколько строк в одну.
a = 'con'
b = 'cat'
c = 'enate'
a + b + c
'concatenate'
Если надо объединить строки с пробелами, то добавляем пробел в кавычках:
d = 'конкатенация'
f = 'строк'
d + ' ' + f
'конкатенация строк'
Как преобразовать число в строку
Попытка склейки разного типа данных, например строки и целого числа, приведет к ошибке. Поэтому, для начала нужно преобразовать число в строку — поставить перед числом оператор str.
'строка' + 10 // неправильно
'строка' + str(10) // правильно
'строка10' // результат
Повторение строки в Python
Как быстро выполнить операцию повторения строки? Очень просто — умножить строку на число повторений.
multi = 'ой-'
print(multi*3)
ой-ой-ой
Длина строки в Python
Операция по вычислению длины строки, довольно часто применяется в программировании. Название функции len — сокращенное от анг. слова length (длина). Функция len() вычисляет количество символов в строке вместе с пробелами. Буквы, знаки пунктуации, пробелы в строке — все это символы.
>>> d_str = 'Длина строки'
>>> len(d_str)
12 // результат
Поиск подстроки в строке в Python
С помощью команды in, можно проверить содержится ли подстрока (символ/ы) в строке, ответом будет истина / ложь.
>>> sub_str = 'поиск подстроки'
>>> 'к' in sub_str
True
>>> s = 'найти подстроку'
>>> 'ю' in s
False
Сравнение строк в Python
К строкам в Python, также можно применять математические операторы сравнения (больше, меньше, равно), однако сравниваются они совсем по другим принципам, нежели числа. Машина сравнивает строки по кодовым значениям символов.
Утверждение, что:
'xy' > 'abc'
True // верно
Здесь у вас наверняка возник вопрос: «Ведь буква «a» стоит выше по алфавиту, чем «x»? В чем подвох? Выведем кодировку первых символов у двух строк. Число 120 явно больше, чем 97.
>>> ord('x')
120
>>> ord('a')
97
Строка из заглавных букв, всегда будет меньше строки из маленьких букв. Поскольку кодовые значения больших букв меньше, чем у маленьких.
Заключение
Я слышал не один раз от разных людей, что программирование они начинали изучать с JavaScript или PHP и не сильно в этом преуспели. И сразу после первой неудачной попытки, поставили крест на программировании, посчитали, что нет у них способностей к этому. Позже, они признались, что непонятные вещи в JavaScript / PHP, стали понятными в процессе изучения Python.
Почему так произошло? Я объясняю этот феномен, более простым синтаксисом в Python. Новичок мог позволить себе больше концентрироваться на логике, засчет легкого восприятия синтаксиса. Вот и весь секрет успеха! Не сдавайтесь так просто, попробуйте мой видеокурс по Python, на простом языке и с упражнениями к урокам!
-
Создано 28.10.2019 10:23:57 -
Михаил Русаков
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
python — Преобразование списка символов в строку
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира
.
строк Python
Строковые литералы
Строковые литералы в Python заключаются в одинарные или двойные кавычки.
«привет» — это то же самое, что «привет».
Вы можете отобразить строковый литерал с помощью функции print ()
:
Назначить строку переменной
Присваивание строки переменной выполняется с именем переменной, за которым следует
знак равенства и строка:
Многострочные строки
Вы можете присвоить переменной многострочную строку, используя три кавычки:
Пример
Можно использовать три двойные кавычки:
a = «» «Lorem ipsum dolor sit amet,
consctetur adipiscing elit,
sed do
eiusmod tempor incididunt
ut labore et dolore magna aliqua.»» «
принт (а)
Попробуй сам »
Или три одинарные кавычки:
Пример
a = » ‘Lorem ipsum dolor sit amet,
consctetur adipiscing elit,
sed do
eiusmod tempor incididunt
ut labore et dolore magna aliqua. »
print (a)
Попробуй сам »
Примечание: в результате разрывы строк вставляются в ту же позицию, что и в коде.
Строки — это массивы
Как и во многих других популярных языках программирования, строки в Python представляют собой массивы байтов, представляющих символы Юникода.
Однако Python не имеет символьного типа данных, одиночный символ — это просто строка длиной 1.
Квадратные скобки могут использоваться для доступа к элементам строки.
Пример
Получить символ в позиции 1 (помните, что первый символ имеет
позиция 0):
a = «Привет, мир!»
печать (a [1])
Попробуй сам »
Нарезка
Вы можете вернуть диапазон символов, используя синтаксис фрагмента.
Укажите начальный и конечный индексы, разделенные двоеточием, чтобы вернуть
часть строки.
Пример
Получить символы из позиции 2 в позицию 5 (не входит в комплект):
b = «Привет, мир!»
печать (b [2: 5])
Попробуй сам »
Отрицательное индексирование
Используйте отрицательные индексы, чтобы начать срез с конца строки:
Пример
Получить символы с позиции 5 до позиции 1 (не входит в комплект), начиная отсчет с
конец строки:
b = «Привет, мир!»
печать (b [-5: -2])
Попробуй сам »
Длина строки
Чтобы получить длину строки, используйте функцию len ()
.
Пример
Функция len ()
возвращает длину строки:
a = «Привет, мир!»
печать (len (a))
Попробуй сам »
Строковые методы
Python имеет набор встроенных методов, которые можно использовать для строк.
Пример
Метод strip ()
удаляет все пробелы с начала или с конца:
a = «Привет, мир!»
print (a.strip ()) # возвращает «Hello, World!»
Попробуй сам »
Пример
Метод lower ()
возвращает строку в нижнем регистре:
a = «Привет, мир!»
печать (a.нижний ())
Попробуй сам »
Пример
Метод upper ()
возвращает строку в верхнем регистре:
a = «Привет, мир!»
печать (a.upper ())
Попробуй сам »
Пример
Метод replace ()
заменяет строку другой строкой:
a = «Привет, мир!»
print (a.replace («H», «J»))
Попробуй сам »
Пример
Метод split ()
разбивает строку на подстроки, если находит экземпляры разделителя:
a = «Привет, мир!»
печать (a.Трещина(«,»)) #
возвращает [‘Hello’, ‘World!’]
Попробуй сам »
Узнайте больше о строковых методах в нашем справочнике по строковым методам
Контрольная строка
Чтобы проверить, присутствует ли определенная фраза или символ в строке, мы можем использовать ключевые слова
в
или не в
.
Пример
Проверьте, присутствует ли фраза «айн» в следующем тексте:
txt = «Дождь в Испании идет в основном на равнине»
x = «ain» в txt
печать (х)
Попробуй сам »
Пример
Проверьте, НЕ присутствует ли фраза «ain» в следующем тексте:
txt = «Дождь в Испании идет в основном на равнине»
x = «ain»
нет в txt
печать (x)
Попробуй сам »
Конкатенация строк
Для соединения или объединения двух строк вы можете использовать оператор +.
Пример
Объединить переменную a
с переменной
b
в переменную c
:
a = «Hello»
b = «World»
c = a + b
печать (с)
Попробуй сам »
Пример
Чтобы добавить пробел между ними, добавьте ""
:
a = «Hello»
b = «World»
c = a + «» + b
печать (с)
Попробуй сам »
Формат строки
Как мы узнали в главе о переменных Python, мы не можем комбинировать строки и числа следующим образом:
Но мы можем комбинировать строки и числа, используя метод format ()
!
Метод format ()
принимает переданные аргументы,
форматирует их и помещает в строку, где заполнители
{}
это:
Пример
Используйте метод format ()
для вставки чисел
в строки:
age = 36
txt = «Меня зовут Джон, и я {}»
print (txt.формат (возраст))
Попробуй сам »
Метод format () принимает неограниченное количество аргументов и помещается в
соответствующие заполнители:
Пример
amount = 3
itemno = 567
price = 49.95
myorder = «Я хочу {}
штук товара {} за {} долларов. «
print (myorder.format (количество,
пунктно, цена))
Попробуй сам »
Вы можете использовать порядковые номера {0}
, чтобы убедиться, что аргументы размещены
в правильных заполнителях:
Пример
количество = 3
арт. номер = 567
цена = 49.95
myorder = «Я хочу заплатить {2}
долларов за {0} штук товара {1}. «
print (myorder.format (количество,
пунктно, цена))
Попробуй сам »
Спасательный персонаж
Чтобы вставить в строку недопустимые символы, используйте escape-символ.
Управляющий символ — это обратная косая черта \
, за которой следует символ, который вы хотите вставить.
Пример недопустимого символа — двойная кавычка внутри строки, окруженная двойными кавычками:
Пример
Вы получите сообщение об ошибке, если используете двойные кавычки внутри строки, которая
в двойных кавычках:
txt = «Мы — так называемые» викинги «с севера.»
Попробуй сам »
Чтобы решить эту проблему, используйте escape-символ \ "
:
Пример
Управляющий символ позволяет использовать двойные кавычки, когда обычно это не разрешено:
txt = «Мы так называемые \» викинги \ «с севера.»
Попробуй сам »
Другие escape-символы, используемые в Python:
Строковые методы
Python имеет набор встроенных методов, которые можно использовать для строк.
Примечание: Все строковые методы возвращают новые значения. Они не меняют исходную строку.
Метод | Описание |
---|---|
capitalize () | Преобразует первое заглавные буквы |
casefold () | Преобразует строку в нижний регистр |
по центру () | Возвращает центрированный строка |
count () | Возвращает количество раз указанное значение встречается в строке |
encode () | Возвращает закодированный версия строки |
endwith () | Возвращает true, если строка заканчивается указанным значением |
expandtabs () | Устанавливает размер табуляции строки |
find () | Ищет в строке указанное значение и возвращает позицию, где оно было найдено |
формат () | Указанные форматы значения в строке |
format_map () | Указанные форматы значения в строке |
index () | Ищет строку для указанного значения и возвращает позицию, где оно было найдено |
isalnum () | Возвращает True, если все символы в строке буквенно-цифровые |
isalpha () | Возвращает True, если все символы в строке находятся в алфавите |
isdecimal () | Возвращает True, если все символы в строке десятичные |
isdigit () | Возвращает True, если все символы в строке — это цифры |
isidentifier () | Возвращает True, если строка является идентификатором |
islower () | Возвращает True, если все символы в строке строчные |
isnumeric () | Возвращает True, если все символы в строке числовые |
isprintable () | Возвращает True, если все символы в строке печатаются |
isspace () | Возвращает True, если все символы в строке — это пробелы |
название () | Возвращает True, если строка соответствует правилам название |
isupper () | Возвращает True, если все символы в строке в верхнем регистре |
join () | Присоединяет элементы итерация до конца строки |
ljust () | Возвращает выровненный по левому краю версия строки |
lower () | Преобразует строку в нижний регистр |
lstrip () | Возвращает левую обрезку версия строки |
maketrans () | Возвращает таблица переводов для использования в переводах |
partition () | Возвращает кортеж где струна разделена на три части |
replace () | Возвращает строку где указанное значение заменяется указанным значением |
rfind () | Ищет в строке указанное значение и возвращает последнюю позицию, где оно было найдено |
rindex () | Ищет в строке указанное значение и возвращает последнюю позицию, где оно было найдено |
rjust () | Возвращает выровненный по правому краю версия строки |
rpartition () | Возвращает кортеж где струна разделена на три части |
rsplit () | Разбивает строку на указанный разделитель и возвращает список |
rstrip () | Возвращает правую обрезку версия строки |
split () | Разделение строки на указанный разделитель и возвращает список |
splitlines () | Разделение строки при переносе строки и возвращает список |
startwith () | Возвращает истину, если строка начинается с указанного значения |
strip () | Возвращает обрезанную версию строки |
сменный кейс () | сменный кейс, нижний регистр становится прописным и наоборот |
название () | Преобразует первое символ каждого слова в верхнем регистре |
translate () | Возвращает переведенная строка |
верхний () | Преобразует строку в верхний регистр |
zfill () | Заполняет строку указанное количество 0 значений в начале |
.
Как проверить, содержит ли строка Python другую строку?
Одна из наиболее распространенных операций, которые программисты используют со строками, — это проверка, содержит ли строка какую-либо другую строку.
Если вы, например, переходите на Python с Java, вы могли использовать метод contains , чтобы проверить, существует ли какая-либо подстрока в другой строке.
В Python есть два способа добиться этого.
Первое: использование оператора in
Самый простой способ — использовать оператор in Python.
Давайте посмотрим на этот пример.
>>> str = "Месси - лучший футболист"
>>> "футбол" на ул.
Правда
>>> "футбол" на ул.
False
Как видите, оператор in возвращает True, если подстрока существует в строке.
В противном случае возвращается false.
Этот метод очень простой, чистый, читаемый и идиоматический.
Секунда: Использование метода поиска
Другой метод, который вы можете использовать, — это метод поиска строки.
В отличие от оператора in, который оценивается как логическое значение, метод find возвращает целое число.
Это целое число, по сути, является индексом начала подстроки, если подстрока существует, в противном случае возвращается -1.
Давайте посмотрим, как работает метод find.
>>> str = "Месси - лучший футболист"
>>> str.find ("футбол")
18
>>> str.find ("Роналду")
-1
>>> str.find ("Месси")
0
В этом методе есть одна замечательная особенность: вы можете дополнительно указать начальный и конечный индексы, чтобы ограничить поиск внутри.
Например
>>> str = "Месси - лучший футболист"
>>> str.find ("футбол", 5, 25)
18
>>> str.find ("Месси", 5, 25)
-1
Обратите внимание, что для «Месси» было возвращено -1, потому что вы ограничиваете поиск строкой только между индексами 5 и 25.
Шпаргалка по Python 3 для начинающих
Загрузите полную шпаргалку для начинающих с подробными примерами кода, которые охватывают все темы, которые вам необходимо изучить.
Некоторые дополнительные возможности
Предположим на секунду, что Python не имеет встроенных функций или методов, которые проверяли бы, содержит ли строка другую строку.
Как бы вы написали функцию для этого?
Что ж, простой способ — это перебор, проверяя, существует ли подстрока, начиная со всех возможных позиций в исходной строке.
Для больших строк этот процесс может быть очень медленным.
Есть лучшие алгоритмы поиска по строкам.
Я настоятельно рекомендую эту статью от TopCoder, если вы хотите узнать больше и глубже погрузиться в алгоритмы поиска строк.
Для большего охвата других алгоритмов поиска строк, не описанных в предыдущей статье, эта страница википедии великолепна.
Если вы просмотрите предыдущие статьи и изучите их, ваш следующий вопрос будет: «А какой алгоритм на самом деле использует Python?»
Вопросы подобного рода почти всегда требуют изучения исходного кода.
Но вам повезло, потому что реализация Python имеет открытый исходный код.
Хорошо, давайте углубимся в код.
Отлично, я рад, что разработчики прокомментировали свой код 🙂
Теперь очень ясно, что метод find использует смесь алгоритмов Бойера-Мура и Хорспула.
Заключение
Вы можете использовать оператор in или метод поиска строки, чтобы проверить, содержит ли строка другую строку.
Оператор in возвращает True, если подстрока существует в строке.В противном случае возвращается False.
Метод find возвращает индекс начала подстроки, если он найден, в противном случае возвращается -1.
Реализация
Python (CPython) использует сочетание boyer-moore и horspool для поиска строк.
Изучение Python?
Загляните в раздел Курсы!
Избранные сообщения
Вы начинаете карьеру программиста?
Я предлагаю свои лучшие материалы для новичков в информационном бюллетене.
- Советы по Python для начинающих, среднего и продвинутого уровней.
- CS Советы и рекомендации по карьере.
- Специальные скидки на мои премиальные курсы при их запуске.
И многое другое…
Подпишитесь сейчас. Это бесплатно.
.