Как найти середину строки в питоне

I just started learning Python (as my first language, so I know next to nothing) and have come across this problem.

Find the midpoint of a word, and point to it using a caret «^».

Example,

Computer
   ^

Thanks for any tips anyone could give me.

Kenan Banks's user avatar

Kenan Banks

206k34 gold badges155 silver badges172 bronze badges

asked Oct 7, 2011 at 16:04

apichel's user avatar

1

Use len, which finds the length of the object.

>>> x = "Computer"
>>> x[len(x)/2 - 1]
'p'

# a.py
x = "Computer"
print x
print (" " * (len(x)/2 - 1)) + "^"

# % python a.py
Computer
   ^

answered Oct 7, 2011 at 16:07

Jin's user avatar

JinJin

12.6k3 gold badges36 silver badges41 bronze badges

1

text='Computer'
print(text)
print('{0:^{1}}'.format('^',len(text)))
  • {0:...} tells format to replace replace itself with the first
    argument, '^'.
  • {1} gets replaced by the second argument, len(text).
  • ^{1} tells format to center the text, and make the total width
    equal to len(text).

So the docs for the full specs on format.

answered Oct 7, 2011 at 16:08

unutbu's user avatar

unutbuunutbu

832k180 gold badges1770 silver badges1660 bronze badges

2

The mid point depends on odd or even length of a string.
So, if it is an odd length the middle will be exactly len/2+1
if it is an even length, you should decide what is the middle for you (len/2 or len/2+1)

x="Computer"

if len(x)%2: return x[len(x)/2+1]

else: return x[len(x)/2]

DavidG's user avatar

DavidG

24k14 gold badges88 silver badges82 bronze badges

answered Jul 6, 2016 at 12:17

Elad Ron's user avatar

I like this format better because it’s simple. It just uses the round() function. But this is only to find the midpoint and not to execute the ^, but I assume that should be self-explanatory.

my_str2 = "computer"
output = round(len(my_str2)/2)
print(my_str2[output])

tdy's user avatar

tdy

35.4k18 gold badges76 silver badges78 bronze badges

answered Nov 13, 2021 at 0:54

FDTeddy's user avatar

На чтение 9 мин Просмотров 4.3к. Опубликовано 10.11.2021

Подробное руководство по использованию строковых методов center, find, isalnum, replace, casefold, endswith, index, isdecimal, isdigit, join, split, isnumeric, isspace, isupper, partition в Python

Содержание

  1. Введение
  2. Метод str.center()
  3. Метод str.find()
  4. Метод str.isalnum()
  5. Метод str.replace()
  6. Метод str.casefold()
  7. Метод str.endswith()
  8. Метод str.index()
  9. Метод str.isdecimal()
  10. Метод str.isdigit()
  11. Метод str.join()
  12. Метод str.split()
  13. Метод str.isnumeric()
  14. Метод str.isspace()
  15. Метод str.isupper()
  16. Метод str.partition()
  17. Заключение

Введение

Строка – это такой порядок символов. Строки начинают считываться со ввода функции input().

Строки принадлежат к объектам класса str.

В сегодняшней статье мы рассмотрим методы строк.

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

Вообще в языке программирования Python есть более 30 методов строк, но в данной статье я расскажу о таких методах как center(), find(), isalnum(), replace(), casefold(), endswith(), index(), isdecimal(), isdigit(), join(), split(), isnumeric(), isspace(), isupper(), partition().

Метод str.center()

Этот метод нужно применять в тех случаях, если нужно выравнять строку по центру. Выравнивание будет выполняться с пробела. Сам метод составляет в себя несколько параметров: это length (есть обязательным параметром и показывает длину строки) и fillchar (символ выравнивания). Если вы указали новое число для ширины новой строки, чем той, которая была в начальной строке, то вы получите такой же код какой был в начале.

Пример кода:

value = "bad"
some_value = value.center(11, "-")
print(some_value)

Вывод программы:

Метод str.find()

Этот метод просто необходим, если вам нужно найти индексы совпадений подстроки в строке. Если данные вы не нашли, то метод возвратит -1. Данная функция может принимать такие параметры: substring (символ/подстрока) – это необходимая для вас подстрока; start – первый индекс со значением 0; end – индекс, который заканчивает отыскивание нужной подстроки.

С помощью метода find() вы можете находить необходимые индексы первого вхождения подстроки в последовательности (строке).

Пример кода:

my_question="Когда пары?"
print("Индекс буквы ‘р’:", string.find("0"))

Вывод программы:

Метод str.isalnum()

Метод isalnum() нужен для того, чтобы выяснить есть ли в строке буквы или цифры. isalnum() вернет True в тех случаях, когда строка заполнена либо символами, либо числами.

Пример кода:

my_var='kfc429'
print (my_var.isalnum())
myVar='kfc@429'
print (myVar.isalnum())
var='333-kfc'
print (var.isalnum())

Вывод программы:

Метод str.replace()

Метод replace() нужен для того, чтобы вернуть копии строки или заменить небольшую ее часть.

Пример кода:

my_variant='Lilia, Vita, Sasha, Masha'

#Нужно заменить все подстроки “Vita” в строке 

print(my_variant.replace('Vita', 'Vitochka')

Вывод программы:

Lilia, , Vitochka, Sasha, Masha

Метод str.casefold()

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

Пример кода:

text='РозЫ, ПИоны, МаКИ'
print(text.casefold())

Вывод программы:

Метод str.endswith()

Метод нужен для того, чтобы вернуть True, если строка имеет искомый суффикс. Данный метод может принимать такие три параметра в позициях: суффиксы-строки или кортежи с суффиксами, чтобы проверять данные в строках; start — это необязательный параметр, который помогает проверять суффиксы в строках; end — тоже необязательный параметр, который нужен для проверки суффиксов в строках.

Итак, сам метод нужен чтобы возвратить True или False, если строки заканчиваются суффиксом или не заканчиваются никакими суффиксами. Также в языке Python есть возможность передавать суффиксы кортежей. Если в вашей строке есть окончания на элемент кортежа, то данный метод вернет True. Если этого нет, то вернется False.

Пример кода:

my_text="Разве ты купил книгу?"
new=my_text.endswith("книгу")
print(new)

Вывод программы:

Метод str.index()

Данный метод возвращает индексы подстрок в середине строк. Если во время проверки не найдётся нужная подстрока, то пишется, что нашлась ошибка (ValueError). Метод может принимать данные параметров: sub (главная подстрока, которую нужно искать в строке), start (начало поиска подстроки), end (необязательный параметр, конец поиска подстроки).

По данному методу можно обнаружить начало указанной подстроки в исходной. Необязательные позиции start и end нужны для того, чтобы принимать любые значения и поддерживать механизмы срезов.

Методом можно воспользоваться в случаях необходимости найти начальные индексы подстроки.

Пример кода:

variant='В аудиторию вошел преподаватель'
print (variant.index('преподаватель'))
 #3
print(variant.index('пришел'))

Вывод программы:

Traceback (most recent call last):

File "<string>", line 4, in <module>
ValueError: substring not found

Метод str.isdecimal()

С помощью этого метода можно вернуть True, в тех случаях, когда символы в строках являются десятичными числами. Если десятичных чисел в строке не нашлось, то возвращается False. Данный метод определяет есть ли цифры в строке. В таком случае возвращается True. Если в строке есть пробелы, буквы, точка или вообще пустая строка, возвращается False.

Пример кода:

my_text="12345"
print (my_text.isdecimal()) 
#в строке только цифры
my_text_2="1_2345"
print (my_text_2.isdecimal()) 
#в строке есть нижнее подчеркивание.

Вывод программы:

Метод str.isdigit()

Данный метод похож на метод isdecimal(). True появляется в результате, если цифры в строке есть и False, если в строке появляется пробел или другой символ, буква, нижнее подчеркивание или смайлик.

С помощью метода isdigit() вы можете понять, что необходимая строка содержит цифры.

Но есть одно но: данный метод работать в тех случаях, если ваши числа являются положительными, на отрицательные данный метод не работает.

Пример кода:

text1='_'
print(text1.isdigit()) 
text2='1235'
print(text2.isdigit()) 
text3='12 563'
print(text3.isdigit())

Вывод программы:

Метод str.join()

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

Данный метод отвечает за превращение списка в строку. Он может использоваться тогда, когда нужно принять итерируемые объекты как аргумент, а список очень часто выступает аргументом. Нужно знать, что этот список должен состоять из строк.

Очень часто начинающие python-программисты задаются вопросом: почему метод join() относится к методам строки, а не методам списка. Отвечаю: функцию join() вы можете использовать в разных целях и с разными итерируемыми объектами, но в результате вы получаете только строку.

Пример кода:

flower=["r", "o", "s", "e"]
flower_str=",".join(flower)
print ("Цветок:",flower_str)

Вывод программы:

Метод join() нельзя использовать в тех случаях, где объединять элементы разного типа. Чтобы не сделать ошибку, превращайте все объекты списка в строки. Это обязательное требование. С помощью метода join() вы можете разбивать строки и обратно преобразовать строку в список.

Метод str.split()

Метод split() есть противоположностью методу join. С его помощью можно разбить строки по нужному вам разделителю и получить список строк.

Метод split() может принимать несколько параметров. Первый параметр — это разделитель, по которому будет разделяться строка. Если вы не указали разделитель, то любой символ (пробел или даже другая строка) уже автоматически считается новым разделителем. Другой параметр — это maxsplit. Он нужен для того, чтобы показать какое будет число разделений в строке. Если вы укажите maxsplit, то ваш список будет иметь maxsplit и еще один объект.

Пример кода:

food='Water, Bread, Bun, Grape' 
#maxsplit:3 
print(food.split (',', 3))
#maxsplit:4 
print(food.split (',', 4))

Вывод программы:

['Water', ' Bread', ' Bun', ' Grape'] 
['Water', ' Bread', ' Bun', ' Grape']

Метод str.isnumeric()

Мы прекрасно помним, что Python имеет динамическую типизацию (когда в объектах хранится информация о значении и информации о типах объектов; сама типизация имеет ряд преимуществ). Очень часто с помощью различных строковых методов не нужно менять тип данных. В Python есть встроенный метод isnumeric(). Он нужен чтобы обрабатывать строки.

Метод isnumeric() возвращает True в тех случаях, если символы оказываются числовыми символами. Если этого не происходит, то выводится False.

С помощью метода isnumeric() можно определить есть ли в аргументе дроби, целые числа, индекса (верхние и нижние), арабские и римские цифры.

Пример кода:

x="Демяновка_деревня"
print(x.isnumeric()) 
#в строке буквы
x="5896" 
print(x.isnumeric())
#в строке цифры

Вывод программы:

Метод str.isspace()

С помощью данного метода вы сможете проверить есть ли в строке пробелы. Этот метод не имеет никаких параметров. Если строка пуста или имеет один пробел, то вы в результате увидите False. Если наоборот, то True.

Пример кода:

var=' b '
print (var.isspace())

Вывод программы:

Метод str.isupper()

Данная строковая функция (метод) нужна для того, чтобы вы могли проверить все ли введенные буквы находятся в верхнем регистре. Метод isupper() позволяет вам вернуть True в тех случаях, если ваши буквы будут в строке прописными. Если нет — то будет выводится False.

Пример кода:

text='Косая строчка'
print(text.isupper())

Вывод программы:

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

Метод str.partition()

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

Метод имеет один параметр sep. Он может содержать один или несколько букв или символов.

Пример кода:

string='The lion is the king of beasts' 
print (string.partition('lion'))
print (string.partition('king'))
string="The tiger is not king of beasts"
print (string.partition('is not'))

Вывод программы:

('The ', 'lion', ' is the king of beasts') 
('The lion is the ', 'king', ' of beasts') 
('The tiger ', 'is not', ' king of beasts')

Заключение

В данной статье мы рассмотрели как использовать основные метолы строк и какие у них существуют аргументы. Больше информации о строковых методах можно получить из официальной документации Python.

Базовые операции¶

# Конкатенация (сложение)
>>> s1 = 'spam'
>>> s2 = 'eggs'
>>> print(s1 + s2)
'spameggs'

# Дублирование строки
>>> print('spam' * 3)
spamspamspam

# Длина строки
>>> len('spam')
4

# Доступ по индексу
>>> S = 'spam'
>>> S[0]
's'
>>> S[2]
'a'
>>> S[-2]
'a'

# Срез
>>> s = 'spameggs'
>>> s[3:5]
'me'
>>> s[2:-2]
'ameg'
>>> s[:6]
'spameg'
>>> s[1:]
'pameggs'
>>> s[:]
'spameggs'

# Шаг, извлечения среза
>>> s[::-1]
'sggemaps'
>>> s[3:5:-1]
''
>>> s[2::2]
'aeg'

Другие функции и методы строк¶

# Литералы строк
S = 'str'; S = "str"; S = '''str'''; S = """str"""
# Экранированные последовательности
S = "snptanbbb"
# Неформатированные строки (подавляют экранирование)
S = r"C:tempnew"
# Строка байтов
S = b"byte"
# Конкатенация (сложение строк)
S1 + S2
# Повторение строки
S1 * 3
# Обращение по индексу
S[i]
# Извлечение среза
S[i:j:step]
# Длина строки
len(S)
# Поиск подстроки в строке. Возвращает номер первого вхождения или -1
S.find(str, [start],[end])
# Поиск подстроки в строке. Возвращает номер последнего вхождения или -1
S.rfind(str, [start],[end])
# Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError
S.index(str, [start],[end])
# Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError
S.rindex(str, [start],[end])
# Замена шаблона
S.replace(шаблон, замена)
# Разбиение строки по разделителю
S.split(символ)
# Состоит ли строка из цифр
S.isdigit()
# Состоит ли строка из букв
S.isalpha()
# Состоит ли строка из цифр или букв
S.isalnum()
# Состоит ли строка из символов в нижнем регистре
S.islower()
# Состоит ли строка из символов в верхнем регистре
S.isupper()
# Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы ('f'), "новая строка" ('n'), "перевод каретки" ('r'), "горизонтальная табуляция" ('t') и "вертикальная табуляция" ('v'))
S.isspace()
# Начинаются ли слова в строке с заглавной буквы
S.istitle()
# Преобразование строки к верхнему регистру
S.upper()
# Преобразование строки к нижнему регистру
S.lower()
# Начинается ли строка S с шаблона str
S.startswith(str)
# Заканчивается ли строка S шаблоном str
S.endswith(str)
# Сборка строки из списка с разделителем S
S.join(список)
# Символ в его код ASCII
ord(символ)
# Код ASCII в символ
chr(число)
# Переводит первый символ строки в верхний регистр, а все остальные в нижний
S.capitalize()
# Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию)
S.center(width, [fill])
# Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию)
S.count(str, [start],[end])
# Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам
S.expandtabs([tabsize])
# Удаление пробельных символов в начале строки
S.lstrip([chars])
# Удаление пробельных символов в конце строки
S.rstrip([chars])
# Удаление пробельных символов в начале и в конце строки
S.strip([chars])
# Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки
S.partition(шаблон)
# Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку
S.rpartition(sep)
# Переводит символы нижнего регистра в верхний, а верхнего – в нижний
S.swapcase()
# Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний
S.title()
# Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями
S.zfill(width)
# Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar
S.ljust(width, fillchar=" ")
# Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar
S.rjust(width, fillchar=" ")

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

S.format(*args, **kwargs)

Примеры¶

Python: Определение позиции подстроки (функции str.find и str.rfind)¶

Определение позиции подстроки в строке с помощью функций str.find и str.rfind.

In [1]: str = 'ftp://dl.dropbox.com/u/7334460/Magick_py/py_magick.pdf'

Функция str.find показывает первое вхождение подстроки. Все позиции возвращаются относительно начало строки.

In [2]: str.find('/')
Out[2]: 4

In [3]: str[4]
Out[3]: '/'

Можно определить вхождение в срезе. первое число показывает начало среза, в котором производится поиск. Второе число — конец среза. В случае отсутствия вхождения подстроки выводится -1.

In [4]: str.find('/', 8, 18)
Out[4]: -1

In [5]: str[8:18]
Out[5]: '.dropbox.c'

In [6]: str.find('/', 8, 22)
Out[6]: 20

In [7]: str[8:22]
Out[7]: '.dropbox.com/u'

In [8]: str[20]
Out[8]: '/'

Функция str.rfind осуществляет поиск с конца строки, но возвращает позицию подстроки относительно начала строки.

In [9]: str.rfind('/')
Out[9]: 40

In [10]: str[40]
Out[10]: '/'

Python: Извлекаем имя файла из URL¶

Понадобилось мне отрезать от URL всё, что находится после последнего слэша, т.е.названия файла. URL можеть быть какой угодно. Знаю, что задачу запросто можно решить с помощью специального модуля, но я хотел избежать этого. Есть, как минимум, два способа справиться с поставленным вопросом.

Способ №1¶

Достаточно простой способ. Разбиваем строку по слэшам с помощью функции split(), которая возвращает список. А затем из этого списка извлекаем последний элемент. Он и будет названием файла.

In [1]: str = 'http://dl.dropbox.com/u/7334460/Magick_py/py_magick.pdf'

In [2]: str.split('/')
Out[2]: ['http:', '', 'dl.dropbox.com', 'u', '7334460', 'Magick_py', 'py_magick.pdf']

Повторим шаг с присвоением переменной:

In [3]: file_name = str.split('/')[-1]

In [4]: file_name
Out[4]: 'py_magick.pdf'

Способ №2¶

Второй способ интереснее. Сначала с помощью функции rfind() находим первое вхождение с конца искомой подстроки. Функция возвращает позицию подстроки относительно начала строки. А далее просто делаем срез.

In [5]: str = 'http://dl.dropbox.com/u/7334460/Magick_py/py_magick.pdf'

In [6]: str.rfind('/')
Out[6]: 41

Делаем срез:

In [7]: file_name = str[42:]

In [8]: file_name
Out[8]: 'py_magick.pdf'
S = ‘str’; S = «str»; S = »’str»’; S = «»»str»»» Литералы строк S = «snptanbbb» Экранированные последовательности S = r»C:tempnew» Неформатированные строки (подавляют экранирование) S = b»byte» Строка байтов S1 + S2 Конкатенация (сложение строк) S1 * 3 Повторение строки S[i] Обращение по индексу S[i:j:step] Извлечение среза len(S) Длина строки S.find(str, [start],[end]) Поиск подстроки в строке. Возвращает номер первого вхождения или -1 S.rfind(str, [start],[end]) Поиск подстроки в строке. Возвращает номер последнего вхождения или -1 S.index(str, [start],[end]) Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError S.rindex(str, [start],[end]) Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError S.replace(шаблон, замена[, maxcount]) Замена шаблона на замену. maxcount ограничивает количество замен S.split(символ) Разбиение строки по разделителю S.isdigit() Состоит ли строка из цифр S.isalpha() Состоит ли строка из букв S.isalnum() Состоит ли строка из цифр или букв S.islower() Состоит ли строка из символов в нижнем регистре S.isupper() Состоит ли строка из символов в верхнем регистре S.isspace() Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы (‘f’), «новая строка» (‘n’), «перевод каретки» (‘r’), «горизонтальная табуляция» (‘t’) и «вертикальная табуляция» (‘v’)) S.istitle() Начинаются ли слова в строке с заглавной буквы S.upper() Преобразование строки к верхнему регистру S.lower() Преобразование строки к нижнему регистру S.startswith(str) Начинается ли строка S с шаблона str S.endswith(str) Заканчивается ли строка S шаблоном str S.join(список) Сборка строки из списка с разделителем S ord(символ) Символ в его код ASCII chr(число) Код ASCII в символ S.capitalize() Переводит первый символ строки в верхний регистр, а все остальные в нижний S.center(width, [fill]) Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию) S.count(str, [start],[end]) Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию) S.expandtabs([tabsize]) Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам S.lstrip([chars]) Удаление пробельных символов в начале строки S.rstrip([chars]) Удаление пробельных символов в конце строки S.strip([chars]) Удаление пробельных символов в начале и в конце строки S.partition(шаблон) Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки S.rpartition(sep) Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку S.swapcase() Переводит символы нижнего регистра в верхний, а верхнего – в нижний S.title() Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний S.zfill(width) Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями S.ljust(width, fillchar=» «) Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar S.rjust(width, fillchar=» «) Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar S.format(*args, **kwargs) Форматирование строки

Методы строк python — это одни из наиболее часто используемых методов. В данной документации по методам строк, я постарался собрать все методы, их описания, и практические примеры по их применению.

Метод capitalize() в Python, преобразует первый символ строки в заглавную букву. В случае если в строке, первый символ начинается с маленькой буквы, а где то по середине строки присутствуют заглавные буквы, то данный метод преобразует эту строку в привычный нам вариант.

Пример 1. Строка с заглавной буквы

                    
string = "python is AWesome."

capitalized_string = string.capitalize()

print('Неизмененный вариант: ', string)
print('Измененный вариант:', capitalized_string)

#Результат
Неизмененный вариант: python is AWesome
Измененный вариант: Python is awesome

Как видите, данный метод работает достаточно просто:

  1. Не принимает никаких значений
  2. Возвращает строку с заглавной буквы (не изменяет исходную строку)

Вполне логичным выглядит вопрос, а что если строка начинается не с алфавитного символа? А давайте посмотрим.

Пример 2. Неалфавитный первый символ

                    
string = "+ is an operator."

new_string = string.capitalize()

print('Неизменный вариант:', string)
print('Измененный вариант:', new_string)

#Результат
Неизменный вариант: + is an operator.
Измененный вариант: + is an operator.

Строка в нижнем регистре Python

Метод casefold() — приведет строку в нижний регистр. Данный метод незаменим при задачах когда необходимо провести сравнение строк. Метод casefold() — удалит просто все различия в строке. Разберем небольшой пример, связанный с немецким алфавитом. Немецкая строчная буква ß является эквивалентом ssТеперь, поскольку ß уже находится в нижнем регистре, то в данном случае, использование например метода lower() нам ничего не даст, но метод casefold() преобразует его в ss.

Пример 1. Приведение в нижний регистр

                    
string = "PYTHON IS AWESOME"

# print lowercase string
print("В нижнем регистре:", string.casefold())
Результат:В нижнем регистре:python is awesome

Пример 2. Сравнение строк

Теперь разберем вышеописанный пример с немецкой строчной буквой.

                    
firstString = "der Fluß"
secondString = "der Fluss"

if firstString.casefold() == secondString.casefold():
    print('Строки равны.')
else:
    print('Строки не равны.')

После запуска данного скрипта, мы увидим сообщение, что строки равны, так как casefold() привел все к единому регистру.

Выравнивание строки по центру

Для выравнивания строки по центру, в python предусмотрен метод center(). На самом деле, данный метод не совсем выравнивает строку по центру, он возвращает строку, с указанным дополнительным символом, будь то просто пробел, или какой нибудь другой символ. Разберемся с данным методом немного по подробнее.

Метод center() принимает два аргумента:

  • width — длина строки с учетом дополненных символов
  • fillchar — необязательный аргумент, задается символ который будет являться заполнителем

Пример 1. Метод center() заполнение по умолчанию

                    
string = "Python is awesome"

new_string = string.center(24)

print("Centered String: ", new_string)

#Результат
Centered String:     Python is awesome  

Пример 2. Метод center() с заполнением символом *

                    
string = "Python is awesome"

new_string = string.center(24, '*')

print("Centered String: ", new_string)
Результат:
Centered String:  ***Python is awesome****

Количество символа в строке python

Возможно в вашей практической деятельности, вы столкнетесь с задачей, где вам необходимо подсчитать, какое количество раз повторяется тот или иной символ в строке? С такой задачей, вам поможет справится метод count(). Данный метод вернет количество вхождений искомого символа.

                    
message = 'python is popular programming language'

# ищем символ p
print('Количество вхождений p:', message.count('p'))

# Результат: Количество вхождений  p: 4

Как видим, данный метод безупречно выполняет свою функцию, теперь разберем более подробно как там все устроено. Синтаксис метода count() выглядит следующим образом:

                    
string.count(substring, start=..., end=...)

Принимаемые параметры метода count():

Метод count() имеет один обязательный параметр, это непосредственно сама подстрока, которую необходимо найти. По мимо основного аргумента, есть еще необязательные аргументы:

  • substring — подстрока которую необходимо найти в строке.
  • start — необязательный, задается значение, откуда начинать поиск
  • stop — задается значение, где прекратить поиск

В итоге в качестве возвращаемого значения, мы получим количество вхождений искомого символа/подстроки в ткущей строке.

Пример. Считаем количество вхождений подстроки

                    
string = "Python is awesome, isn't it?"
substring = "is"

count = string.count(substring)

print("Вхождений:", count)

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

Проверка окончания строки

В Python есть метод endswith(), данный метод вернет True, если строка заканчивается указанным пользователем окончанием, False если это не так.

                    
message = 'Python is fun'

# смотрим, есть ли в предложении окончание fun
print(message.endswith('fun'))

# Результат: True

Метод endswith() принимает несколько параметров. Один обязательный, и два необязательных параметра.

  • Окончание/суффикс — подстрока, которую мы ищем в окончании строки
  • start — начало поиска
  • stop — конец поиска

Пример. Ищем вхождение окончания в строке

                    
text = "Python is easy to learn."

result = text.endswith('to learn')
# получаем False
print(result)

result = text.endswith('to learn.')
# получаем True
print(result)

result = text.endswith('Python is easy to learn.')
# получаем True
print(result)

Как видите в применении данного метода, нет ничего сложного.

Поиск подстроки в строке python

Для поиска подстроки в строке Python, используется специальный метод find(). Метод find() как и большинство остальных методов, работает довольно просто. Если искомый элемент найден в строке, он вернет нам индекс первого вхождения, если не найден он вернет нам -1.

Метод find() принимает три параметра, один обязательный, и два необязательных параметра:

  • Подстрока — элемент который необходимо найти
  • Начало — индекса начала поиска
  • Стоп — Индекса конца поиска

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

                    
quote = 'Let it be, let it be, let it be'

result = quote.find('let it')
print("Substring 'let it':", result)

result = quote.find('small')
print("Substring 'small ':", result)

if (quote.find('be,') != -1):
    print("Элемент существует" 'be,'")
else:
    print("Элемент не существует")

  • В первом примере метод find() нашел первое вхождение и вернул нам значение индекса
  • Во втором случае метод find() не нашел вхождение, и соответственно вернул значение -1
  • В третьем случае, мы создали условие, если подстрока существует в строке (то есть не равна -1), то верни сообщение о его существовании, в противном случае, сообщение о том, что его нет.

Индекс символа в строке Python

Метод index() возвращает индекс подстроки, внутри строки, в случае если он существует. В случае, если подстрока отсутствует, мы получаем исключение.

                    
text = 'Python is fun'

# Поиск индекса
result = text.index('is')
print(result)

# Результат: 7

Принимаемые параметры метода index()

  • Подстрока — искомый элемент в строке
  • Начало и конец — начала и конец поиска str[начало:конец]

Возвращаемые значения

  • В случае, если подстрока существует в строке, метод index() вернет нам индекс искомого элемента
  • В случае, если подстрока отсутствует в строке, метод index() вызовет ошибку ValueError

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

                    
sentence = 'Python programming is fun.'

result = sentence.index('is fun')
print(result)

result = sentence.index('Java')
print(result)

Понравилась статья? Поделить с друзьями:
  • Асимметрия губ после увеличения как исправить видео
  • Obs crashed как исправить
  • Нечеткий шрифт windows 10 как исправить
  • Как найти утерянное письмо по почте
  • Неправильный прикус у подростка 14 лет как исправить