Редактирование строк в Python

Введение

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

Общую информацию о строка в Python читайте здесь

Методы

Изучить все доступные для работы со str методы можно вызвав функцию help с аргументом str

>>> help(str)

capitalize

Рассмотрим метод capitalize

| capitalize(self, /) | Return a capitalized version of the string. | | More specifically, make the first character have upper case and the rest lower | case.

>>> c = "topBicycle.ru"
>>> c.capitalize()

'Topbicycle.ru'

Первая буква стала заглавной. Все остальные стали строчными.

capitalize() не изменят изначальную строку. Это можно проверить выполнив

>>> c

'topBicycle.ru'

Обрезать строку

# удалить x символов с конца строки s s[:-x] # удалить y символов с начала строки s s[y:] # обрезать и начало и конец s[y:-x] # оставить только x символов с начала строки s s[:x] # оставить только y символов с конца строки s s[-y:]

Как запомнить что будет удалено:

Число это всегда индекс элемента. Он может быть как положительным так и отрицательным. 0 и -0 это одно и то же.

Если число стоит справа от двоеточия - удалится то что справа от индекса включая элемент с этим индексом.

Если число стоит слева от двоеточия - удалится то что слева от индекса.

s = s[:x] + s[x:]

Примеры

s = "abcd" print(f"{s} = {s[:1]} + {s[1:]}")

abcd = a + bcd

# 012345678 url = "https://www.heihei.ru" print(url[:8]) # https:// print(url[8:]) # www.heihei.ru

https:// www.heihei.ru

url = "https://www.heihei.ru" print(url[:-3]) # https://www.heihei print(url[-3:]) # .ru

https://www.heihei .ru

split(): строку в список

Превратить строку в список можно методом split()

По умолчанию разделитель это пробел

cities = "Benalmadena Cordoba Fuengirola Malaga Narva Riga" c_list = cities.split() print(c_list) print(c_list[3])

['Benalmadena', 'Cordoba', 'Fuengirola', 'Malaga', 'Narva', 'Riga'] 'Malaga'

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

cities = "|Benalmadena|Cordoba|Fuengirola|Malaga|Narva|Riga|" c_list = cities.split("|") print(c_list)

['', 'Benalmadena', 'Cordoba', 'Fuengirola', 'Malaga', 'Narva', 'Riga', '']

Избавиться от ненужных пустых строк можно с помощью функций filter() и list()

print(list(filter(None, c_list)))

['Benalmadena', 'Cordoba', 'Fuengirola', 'Malaga', 'Narva', 'Riga']

strip(): очистить от лишних символов

Убрать из строки лишние символы в начале и конце строки можно методом strip()

По умолчанию удаляются пробелы

site = " heihei.ru " s = site.strip() print("of all websites", s, "is my favorite")

of all websites heihei.ru is my favorite

Можно явно указать от каких символов нужно очистить строку.

capital = ",,,bbbbbcc....Riga..,,zz" c = capital.strip(",bc.z") print(c, "is the captital of Latvia")

Riga is the captital of Latvia

strip() удаляет символы только в самом начале и в самом конце строки

a = "----A---B---C----" print(a) b = a.strip("-") print(b)

----A---B---C---- A---B---C

Если нужна замена символов во всей строке - подойдёт метод replace()

rstrip()

В rstrip() нужно передать набор символов, которые нужно удалить справа.

Если в конце строки символ совпадает с одним из символов, переданных в rstrip() он будет удалён.

Как только последний символ строки перестает соответствовать паттерну - работа завершается.

url = "https://testsetup.site" s = url.rstrip(".ru") print(s)

https://testsetup

text = "ABCDDDDDEEEEEE" s = text.rstrip("DE") print(s)

ABC

text = "AAACABAB" print(text.rstrip("AB"))

AAAC

text = "00001000" print(text.rstrip("0"))

00001

replace()

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

Рассмотрим пример с uuid() - удалим все дефисы.

import uuid uid = str(uuid.uuid4()) print(uid) rp = uid.replace("-", "") print(rp)

ceff8b0e-408f-489a-8441-52e95952ff04 ceff8b0e408f489a844152e95952ff04

В статье про списки мы изучали как вставить в строку слово с помощью .split() и .join()

Аналогичного результата можно добиться с помощью .replace()

s = "Please visit website" s = s.replace("visit", "visit www.testsetup.site") print(s)

Please visit www.testsetup.site website

Экранирование одиночной кавычки

# symbol_in_str.py s = "Bobby's bites" print(s) if "'" in s: print("Found ' in s") name = s.replace("'", "\'") else: name = s print(name)

Bobby's bites Found ' in s Bobby\'s bites

Вопросы для самопроверки

1

Вопрос: что вернёт print(res)

# 1 sample = 'a"bc"def"' res = sample[sample.index('"') + 1 : sample.index('"', (sample.index('"') + 1))]

Посмотреть ответ

2

Вопрос: что вернёт s.isupper()

s = "1C"

Посмотреть ответ

Изображение баннера

Ответы

Вопрос 1

# 1 sample = 'a"bc"def"' res = sample[sample.index('"') + 1 : sample.index('"', (sample.index('"') + 1))] print(res) # bc

bc

Вопрос 2

# 2 s = "1C" print(s.isupper())

True

Автор статьи: Андрей Олегович