Найти тему

Работа со строками

#Код1

my_str = 'Сидел барсук в своей норе и ел картошечку пюре' # Создаем строку

print(my_str)

print(len(my_str)) # Получаем длину строки с помощью встроенного метода len()

#my_str = 'Сидел барсук в своей норе и ел картошечку пюре'# + '.'

my_str1 = my_str + '.' # Выполняем конкатенацию строк через переменную

print(my_str1)

print('ре' in my_str) # Определяем вхождение подстроки 'ре'

print(my_str.count('ре')) # Определяем количество вхождений подстроки 'ре'

print(my_str[-2]) # Получаем предпоследний символ строки

print(my_str[1::2]) # Получаем элементы с нечетными индексами

# Для этого выполняем срез, начиная с элемента с индексом 1 по конец строки с шагом 2

print(my_str.count(' ') + 1) # Определяем количество слов в строке

# Для этого считаем количество пробелов и прибавляем 1

#Код2

my_str = 'пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.' # Создаем строку

if my_str.islower(): print(my_str.capitalize()) # Проверяем регистр строки и делаем первую букву заглавной, если регистр нижний

# Ищем индекс вхождения подстроки 'сопровождать'

# Вариант 1: Используем метод find() - строковый метод

print(my_str.find('сопровождать'))

# Вариант 2: Используем метод index() - метод для работы с любыми последовательностями

print(my_str.index('сопровождать'))

my_str2 = my_str.replace('сопровождать', 'поддерживать') # Заменяем подстроку 'сопровождать' на 'поддерживать'

print(my_str2)

lst = my_str.split(',') # Разбиваем строку на подстроки по разделителю ',' и сохраняем подстроки в список

print(lst)

lst = ','.join(lst)

print(lst)

#Код3 Выводит расширение файла

# Импортируем стандартный модуль re для работы с регулярными выражениями

import re

# Создаем константу для имени файла, которое будет использовать для тестов

FILENAME = 'folder1/folder2/file.ext'

# Вариант решения 1 - пользуемся срезами

def extention_slice(filename):

# Находим индекс точки

point_pos = filename.find('.')

# Возвращаем срез начиная с позиции после точки и до конца имени файла

return filename[point_pos + 1:]

# Вариант решения 2 - используем функцию partition()

def extention_part(filename):

# С помощью метода partition() разбиваем имя файла на 3 части

# В качестве разделителя используем символ '.'

# Метод partition() возвращает кортеж из 3 элеметов

# Возвращаем 3-й элемент

return filename.partition('.')[2]

# Вариант решения 3 - пользуемся регулярными выражениями

def extention_regex(filename):

# Формируем регулярное выражение для поиска расширения:

# \. - ищем символ точки в строке

# .+$ - после точки ищем любые символы вплоть до конца строки

# (.+$) - скобками формируем группу(это необходимо, чтобы получить не точку с расширением, а только само расширение)

regex = r'\.(.+$)'

# Обращаемся к модулю re и вызываем для него метод search для поиска подстроки по регулярному выражению

# Из результата берем группу с индексом 1

# Это часть подстроки, которая подходит под выражение в скобках (например, 'ext')

# Группа с индексом 0 - это полная подстрока, подходящая под регулярное выражение(например, '.ext')

return re.search(regex, filename)[1]

# Тесты

if __name__ == '__main__':

print(extention_slice(FILENAME))

print(extention_part(FILENAME))

print(extention_regex(FILENAME))

#Код4 Складывает цифры целого числа

NUM = 12345

# Вариант решения 1 - пользуемся циклом for

def sum_for(num):

# Инициализируем переменную для суммы

s = 0

# Преобразуем число в строку

# В цикле перебираем символу полученной строки

for item in str(num):

# Каждый символ переводим в число и добавляем к сумме

s = s + int(item)

# Возвращаем конечную сумму

return s

# Вариант решения 2 - используем генераторы списков

def sum_list(num):

# Создаем список с помощью генератора

# Конечные элементы списка переводим в числа

lst = [int(item) for item in str(num)]

# С помощью встроенной функции sum() находим сумму элементов списка

return sum(lst)

# Тесты

if __name__ == '__main__':

print(sum_for(NUM))

print(sum_list(NUM))

#Код5 Заменяет заданное количество вхождений подстроки

STR = '01101011101011'

# Тесты

if __name__ == '__main__':

# Заменяем 1 ноль на единицу

print(STR.replace('1', '0', 1))

# Заменяем 5 нулей на единицы

print(STR.replace('1', '0', 5))

# Заменяем все нули на единицы(значение по-умолчанию)

print(STR.replace('1', '0'))

# Заменяем 9 нулей на единицы(все присутствующие единицы)

print(STR.replace('1', '0', 9))

# Заменяем 10 нулей на единицы(количество единиц больше, чем есть в строке)

print(STR.replace('1', '0', 10))

#Код6 Проверяет, является ли строка палиндромом

# Список из нескольких строк для тестирования работы функции check_if_palindrome()

TESTS = ['Аргентина манит негра',

'аргентина манит негра',

'Манит Аргентина негра']

# Функция, которая проверяет, является ли переданная строка string палиндромом

def check_if_palindrome(string):

# Для упрощения процесса проверки удаляем пробелы между словами

# И переводим строку в нижний регистр

prepared_str = string.replace(' ', '').lower()

# Используем срез с обратным шагом, чтобы перевернуть строку задом наперед

# Если строка равна своей перевернутой копии

if prepared_str == prepared_str[::-1]:

# Возвращаем логическое True

return True

else:

# Возвращаем логическое False

return False

if __name__ == '__main__':

# Прогоняем в цикле все тестовые строки из списка

# Для каждой строки вызываем функцию, выполняем проверку и печатаем результат

for item in TESTS:

print('Строка является палиндромом:', check_if_palindrome(item))

#Код7 Меняет слова местами

def swap_words(string):

# Формируем список из слов строки

lst = string.split(' ')

# Меняем порядок слов на обратный

lst.reverse()

# Соединяем слова в предложение через пробелы и возвращаем полученное значение

return ' '.join(lst)

if __name__ == '__main__':

print(swap_words('идет снег'))

print(swap_words('идет снег давно'))

Наука
7 млн интересуются