Share This
Связаться со мной
Крути в низ
Categories
//Как обрезать строку в Python

Как обрезать строку в Python

22.06.2024Category : Python

В этой статье мы рассмотрим несколько способов обрезки строк. Будем применять срезы, строковый метод rsplit(), форматирование и метод shorten() из модуля textwrap.

Содержание

  • Обрезка строки с помощью срезов
  • Добавление многоточия после обрезки
  • Создание переиспользуемой функции
  • Обрезка строки с помощью f-строк
  • Обрезка строки с помощью str.rsplit()
  • Обрезка строки с помощью textwrap.shorten()
  • Обрезка строки с помощью str.format()

Обрезка строки с помощью срезов

Чтобы обрезать строку, можно применить синтаксис срезов, например result = my_str[:5]. Этот срез возвращает первые пять символов строки.

my_str = 'bobbyhadz.com'  result = my_str[:5] print(result)  # 👉️ bobby

kak obrezat stroku v python 495266d - Как обрезать строку в Python

Синтаксис среза строк следующий: my_str[start:stop:step].

Индекс start является инклюзивным, а индекс stop — эксклюзивным (символ под индексом start войдет в итоговый срез, а под индексом stop — нет).

Индексация в Python начинается с нуля, поэтому первый символ в строке имеет индекс 0, а последний — -1 или len(my_str) — 1.

my_str = 'bobbyhadz.com'  result = my_str[:5] print(result)  # 👉️ bobby

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

Добавление многоточия после обрезки

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

my_str = 'bobbyhadz.com'  result = my_str[:5] + '...' if len(my_str) > 5 else my_str print(result)  # 👉️ bobby...

kak obrezat stroku v python 1d1b2b3 - Как обрезать строку в Python

Выражение слева от оператора if (тут — троеточие) возвращается, если условие выполнено, в противном случае строка возвращается как есть.

Создание переиспользуемой функции

Если вам часто приходится обрезать строки, можно создать специальную функцию.

def truncate_string(string, length, suffix='...'):     return string[:length] + suffix   print(truncate_string('bobbyhadz.com', 3)) # bob... print(truncate_string('bobbyhadz.com', 5)) # bobby... print(truncate_string('bobbyhadz.com', 7)) # bobbyha...

kak obrezat stroku v python 8ff22c7 - Как обрезать строку в Python

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

Обрезка строки при форматировании

Обрезать строку, в том числе при соблюдении определенного условия, можно с помощью f-строк.

my_str = 'bobbyhadz.com'   result = f'{my_str:.5}' print(result)  # 👉️ bobby  result = f'{my_str:.5}{"..." if len(my_str) > 5 else ""}' print(result)  # 👉️ bobby...

kak obrezat stroku v python 73250eb - Как обрезать строку в Python

Обязательно заключайте выражения в фигурные скобки — {expression}:

var1 = 'bobby' var2 = 'hadz'  result = f'{var1}{var2}' print(result)  # 👉️ bobbyhadz

F-строки также позволяют нам использовать мини-язык спецификации формата в блоках выражений.

my_str = 'bobbyhadz.com'   result = f'{my_str:.5}' print(result)  # 👉️ bobby

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

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

my_str = 'bobbyhadz.com'   result = f'{my_str:.5}{"..." if len(my_str) > 5 else ""}' print(result)  # 👉️ bobby...

Обрезка строки с помощью str.rsplit()

Если вам нужно удалить последнее слово из строки, воспользуйтесь методом str.rsplit().

my_str = 'bobby hadz com'  new_str = my_str.rsplit(' ', 1)[0] print(new_str)  # 👉️ 'bobby hadz'

kak obrezat stroku v python 497f7f4 - Как обрезать строку в Python

Метод str.rsplit() возвращает список слов в строке, используя переданный аргумент separator в качестве строки-разделителя.

my_str = 'bobby hadz com'  print(my_str.rsplit(' '))  # 👉️ ['bobby', 'hadz', 'com'] print(my_str.rsplit(' ', 1))  # 👉️ ['bobby hadz', 'com']

Метод str.rsplit() принимает 2 аргумента:

  • separator — разделитель, по которому строка разбивается на подстроки. Если не указан, в качестве разделителя используется пробел.
  • maxsplit — максимальное количество разрезов. Деление строки начинается справа. Это опциональный аргумент.

Если вам нужно удалить из строки 2 последних слова, установите аргумент maxsplit равным 2 и обратитесь к элементу списка с индексом 0.

my_str = 'bobby hadz com'  # 👇️ Удалить последнее слово из строки result = my_str.rsplit(' ', 1)[0] print(result)  # 👉️ bobby hadz  # 👇️ Удалить 2 последних слова из строки result = my_str.rsplit(' ', 2)[0] print(result)  # 👉️ bobby

Обрезка строки с помощью textwrap.shorten()

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

import textwrap  a_string = 'bobby hadz com one two three'  new_string = textwrap.shorten(a_string, width=8, placeholder='') print(new_string) # 👉️ bobby  new_string = textwrap.shorten(a_string, width=8, placeholder='...') print(new_string) # 👉️ bobby...  new_string = textwrap.shorten(a_string, width=15, placeholder='...') print(new_string) # 👉️ bobby hadz...

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

import textwrap  a_string = 'bobby hadz com one two three'  new_string = textwrap.shorten(a_string, width=5, placeholder='...') print(new_string)  # 👉️ ...

В этом примере суммарная длина первого слова и заполнителя превышает заданную ширину в пять символов, поэтому возвращается только заполнитель.

Метод textwrap.shorten():

  1. Сокращает пробельные символы (заменяет несколько последовательных пробелов одним пробелом).
  2. Возвращает строку с сокращенными пробелами, если она укладывается в указанную ширину.
  3. В противном случае из строки вырезается (с конца) достаточное количество слов, чтобы оставшиеся слова плюс заполнитель поместились в указанную ширину.

Обрезка строки с помощью str.format()

Для обрезки строки также можно использовать метод str.format().

a_string = 'bobby hadz com one two three'  new_str = '{:.5}'.format(a_string) print(new_str)  # 👉️ bobby  new_str = '{:.7}'.format(a_string) print(new_str)  # 👉️ bobby h  new_str = '{:.3}'.format(a_string) print(new_str)  # 👉️ bob

Цифра после точки используется для указания количества символов строки, которые нужно вывести.

Метод str.format() выполняет операции форматирования строк.

first = 'bobby' last = 'hadz'  result = "Name: {} {}".format(first, last) print(result)  # 👉️ "Name: bobby hadz"

Строка, на которой вызывается метод, может содержать поля замены, указанные с помощью фигурных скобок {}.

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

a_string = 'bobby hadz com one two three'  new_str = '{:.5}'.format(a_string) + "..." if len(a_string) > 5 else "" print(new_str)  # 👉️ bobby...

Строка в примере содержит более 5 символов, поэтому выполняется оператор if и в конце добавляется многоточие.

Перевод статьи «How to truncate a String in Python».

  • 4 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close