Вывод строки до определенного символа python

Срезы строк [ Python 3 ]

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

Рассмотрим строку s = ‘abcdefghij’ .

Положительные индексы 0 1 2 3 4 5 6 7 8 9
Строка a b c d e f g h i j
Отрицательные индексы -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

С помощью среза мы можем получить несколько символов исходной строки, создав диапазон индексов разделенных двоеточием s[x:y] .

Следующий программный код:

print(s[2:5]) print(s[0:6]) print(s[2:7])

При построении среза s[x:y] первое число – это то место, где начинается срез (включительно), а второе – это место, где заканчивается срез (невключительно). Разрезая строки, мы создаем подстроку, которая по сути является строкой внутри другой строки.

Срез до конца, от начала

Если опустить второй параметр в срезе s[x:] (но поставить двоеточие), то срез берется до конца строки. Аналогично если опустить первый параметр s[:y] , то можно взять срез от начала строки. Срез s[:] совпадает с самой строкой s .

Следующий программный код:

Срез s[:] возвращает исходную строку.

Отрицательные индексы в срезе

Мы также можем использовать отрицательные индексы для создания срезов. Как уже говорилось ранее, отрицательные индексы строки начинаются с -1 и отсчитываются до достижения начала строки. При использовании отрицательных индексов первый параметр среза должен быть меньше второго, либо должен быть пропущен.

Следующий программный код:

Удалить из строки последний символ можно при помощи среза s[:-1] .

Шаг среза

Мы можем передать в срез третий необязательный параметр, который отвечает за шаг среза. К примеру, срез s[1:7:2] создаст строку bdf состоящую из каждого второго символа (индексы 1, 3, 5 , правая граница не включена в срез).

Отрицательный шаг среза

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

Следующий программный код:

Следующий программный код:

print(s[1:7:2]) print(s[3::2]) print(s[:7:3]) print(s[::2]) print(s[::-1]) print(s[::-2])
bdf dfhj adg acegi jihgfedcba jhfdb

Подводя итог

s = ‘abcdefghij’

Программный код Результат Пояснение
s[2:5] cde строка состоящая из символов с индексами 2, 3, 4
s[:5] abcde первые пять символов строки
s[5:] fghij строка состоящая из символов с индексами от 5 до конца
s[-2:] ij последние два символа строки
s[:] abcdefghij вся строка целиком
s[1:7:2] bdf строка состоящая из каждого второго символа с индексами от 1 до 6
s[::-1] jihgfedcba строка в обратном порядке, так как шаг отрицательный

Изменение символа строки по индексу

Предположим, у нас есть строка s = ‘abcdefghij’ и мы хотим заменить символ с индексом 4 на ‘X’ . Можно попытаться написать код:

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

Если мы хотим поменять какой-либо символ строки s , мы должны создать новую строку. Следующий код использует срезы и решает поставленную задачу:

Мы создаем два среза: от начала строки до 3 символа и с 5 символа по конец строки, а между ними вставляем нужный нам символ, который встанет на 4 позицию.

Примечания

Примечание 1. Синтаксис срезов строк очень похож на синтаксис функции range() .

Примечание 2. Если первый параметр среза больше второго, то срез создает пустую строку.

Источник

Индексация и срез строк в Python 3

Строки – это тип данных Python, который представляет собой последовательность из одного или нескольких символов (букв, цифр, пробелов и других символов). Поскольку строки являются последовательностями, с ними можно взаимодействовать так же, как и с другими типами данных на основе последовательности – путём индексации и среза.

Данное руководство научит вас индексировать строки, создавать срезы и использовать некоторые методы подсчёта и поиска символов.

Индексация строк

Каждому символу в строке соответствует индексный номер, начиная с 0. К примеру, строка 8host Blog! индексируется следующим образом:

8 h o s t B l o g !
0 1 2 3 4 5 6 7 8 9 10

Как видите, индексом первого символа является 0, последний индекс, 10, принадлежит символу «!».Любой другой символ или знак препинания (*#$&.;?,) также будет иметь свой собственный номер индекса.

Следует обратить внимание на то, что пробел также является частью строки, потому тоже имеет свой индекс (в данном случае 5).

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

Поиск символа по положительному индексу

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

ss = «8host Blog!»
print(ss[4])
t

Когда вы ссылаетесь на конкретный индекс, Python возвращает символ, которому этот индекс принадлежит. Символ t в строке 8host Blog! имеет индекс 4.

Выбор символа по отрицательному индексу

К примеру, у вас есть очень длинная строка. Чтобы точно определить её конец, можно начать счёт в обратном порядке, начиная с конца строки и индекса -1.

К примеру, строка 8host Blog!будет иметь следующий негативный индекс:

8 h o s t B l o g !
-11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

Запросите символ с отрицательным индексом -9:

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

Срез строк

Также вы можете вызвать диапазон символов из строки. К примеру, вывести только Blog. Для этого используется оператор нарезки, а получившийся в результате фрагмент данных называется срезом. Чтобы создать срез, введите диапазон индексов в квадратные скобки, разделив их двоеточием:

Как можно понять из примера, 6 – индекс первого символа среза (включительно), а 10 – индекс символа после среза (по сути, в срез входят символы с индексами 6, 7, 8 и 9; восклицательный знак с индексом 10 уже не входит в срез).

Выполняя нарезку строки, вы создаёте новую строку, точнее, подстроку – строку, которая существует внутри другой строки (к примеру, строка Blog существует внутри строки 8host Blog!).

Чтобы включить в срез начало или конец строки, можно опустить индекс первого или последнего её символа. К примеру, чтобы вывести только 8host (первое слово строки), можно ввести:

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

Чтобы вывести подстроку, начиная с середины строки и до конца, можно ввести:

Также в срезе можно использовать отрицательный индекс. Как говорилось в предыдущем разделе, отрицательная индексация начинается с -1 с конца строки, обратный отсчёт продолжается до первого символа строки.

Попробуйте запросить срез с помощью отрицательного индекса:

Срезы с шагом

В предыдущем разделе срез был взят по такому шаблону:

включая индекс start и не включая индекс stop. Однако срезы можно задавать по трём параметрам:

где stride – шаг. Этот параметр указывает, на сколько символов нужно продвинуться после взятия первого символа. По умолчанию шаг в Python равен 1, то есть, Python будет извлекать символы по порядку.

Шаг со стандартным значением 1 можно не указывать – это не повлияет на поведение Python. Например:

print(ss[6:10])
Blog
print(ss[6:10:1])
Blog

Стандартный шаг будет выводить каждый индекс. Попробуйте задать нестандартное значение шага:

Если шаг – 2, Python пропустить каждый второй символ и выведет символы исходной строки через один (выведенные символы выделены красным):

Обратите внимание: пробел с индексом 5 также был пропущен, поскольку он является отдельным символом в последовательности.

Такой шаг выведет каждый четвертый символ после первого символа строки.

Запрашивая всю строку, вы можете не указывать первые два параметра (start и stop), так как при этом Python по умолчанию выводит строку от начала до конца.

Также вы можете использовать отрицательные индексы. Шаг -1 выведет символы строки в обратном порядке:

Первые два параметра пропущены, потому Python выведет все символы строки.

Попробуйте запросить всю строку с шагом -2:

При этом символы строки будут выведены в обратном порядке через один:

Методы подсчета

Методы подсчета позволяют ограничить количество символов в формах пользовательского ввода и сравнивать строки. Как и для других последовательных типов данных, для работы со строками существует несколько методов.

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

Запросите длину строки ss:

Строка «8host Blog!» содержит 11 символов.

Кроме переменных, метод len() может подсчитать длину любой заданной строки, например:

print(len(«Let’s print the length of this string.»))
38

Метод len() подсчитывает общее количество символов в строке.

Метод str.count()может подсчитать, сколько раз в строке повторяется тот или иной символ. Запросите количество символов о в строке «8host Blog!».

Несмотря на то, что символ b присутствует в запрашиваемой строке, метод возвращает 0, поскольку он чувствителен к регистру. Чтобы вывести символы по нижнему регистру, используйте метод str.lower().

Используйте метод str.count() на последовательность символов:

likes = «Mary likes to swim in the ocean, and likes to smile.»
print(likes.count(«likes»))
2

Подстрока likes встречается в вышеприведённой строке дважды.

Чтобы определить индекс символа в строке, используйте метод str.find().

Для примера запросите индекс символа o в строке ss:

Первый символ о в строке «8host Blog!» находится под индексом 2.

Попробуйте узнать индекс первого символа подстроки «likes» внутри строки likes:

Но в данной строке последовательность likes встречается дважды. Как узнать индекс первого символа второй последовательности likes? Методу str.find() можно задать второй параметр – индекс, с которого нужно начинать поиск.

Заключение

Теперь вы обладаете базовыми навыками работы со строками, умеете индексировать их и создавать срезы.

Источник

Читайте также:  Load file java linux
Оцените статью