Python поиск символа в строке: Найти индекс символа в строке Python

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

В этом посте мы обсудим, как найти индекс первого вхождения символа в строку в Python.

1. Использование

find() функция

Стандартным решением для поиска позиции символа в строке является использование find() функция. Возвращает индекс первого вхождения в строку, где найден символ. Он возвращается -1 когда персонаж не найден.

1

2

3

4

5

6

7

8

9

10

11

12

if __name__ == ‘__main__’:

 

    s = «Techie»

    ch = ‘e’

 

    index = s.find(ch)

 

    if index != -1:

        print(f»Found character ‘{ch}’ at index {index}»)    # Найден символ ‘e’ в индексе 1

    else:

        print(«Character not found»)

 

Скачать  Выполнить код

2.

Использование index() функция

В качестве альтернативы вы можете использовать

index() функция, похожая на find() функционировать, но повышает ValueError когда персонаж не найден.

1

2

3

4

5

6

7

8

9

10

11

if __name__ == ‘__main__’:

 

    s = «Techie»

    ch = ‘e’

 

    try:

        index = s.index(ch)

        print(f»Found character ‘{ch}’ at index {index}»)  # Найден символ ‘e’ в индексе 1

    except:

        print(«Character not found»)

 

Скачать  Выполнить код

3. Использование

enumerate() функция

Вот решение с использованием enumerate() работа с генераторами. Это полезно, когда вам нужно найти положение всех символов в строке, которые удовлетворяют условию.

1

2

3

4

5

6

7

8

if __name__ == ‘__main__’:

 

    s = «Techie»

    ch = ‘e’

 

    indexes = [i for i, c in enumerate(s) if c == ch]

    print(f»Found character ‘{ch}’ at index {indexes}»)  # Найден символ ‘e’ по индексу [1, 5]

 

Скачать  Выполнить код

4. Использование

more_itertools.locate() функция

Наконец, вы можете использовать locate() функцию от more_itertools Модуль Python для поиска символов в строке. Он возвращает индекс каждого символа в строке, для которой возвращается указанный предикат. True.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

import more_itertools

 

if __name__ == ‘__main__’:

 

    s = «Techie»

    ch = ‘e’

 

    index = next(more_itertools. locate(s, lambda x: x == ch))

 

    if index != -1:

        print(f»Found character ‘{ch}’ at index {index}»)    # Найден символ ‘e’ в индексе 1

    else:

        print(«Character not found»)

 

Скачать код

Это все, что касается поиска индекса символа в строке в Python.

Оценить этот пост

Средний рейтинг 4.95/5. Подсчет голосов: 21

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?


Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂


python — Как заменить символ в строке по индексу?

Вопрос задан

Изменён 29 дней назад

Просмотрен 7k раза

Например: в строке AABAABAAАA нужно заменить именно 6й символ(по индексу 5) на A.

  • python
  • python-3.x
  • строки

Строки в Python неизменяемы, поэтому для этой операции нет встроенного метода. Вам придётся создать новую строку на основе исходной.

Наиболее быстрый способ — взять срез до и после необходимого символа:

i = 5
s = 'AABAABAAАA'
result = s[:i] + 'A' + s[i+1:]  # AABAAAAAАA

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

s = 'AABAABAAАA'
li = list(s)
li[5] = 'A'
result = ''.join(li)  # AABAAAAAАA

Тип bytes — это неизменяемая последовательность байтов. Каждый элемент такой последовательности может хранить целое число от О до 255, обозначающее код символа. Этот тип поддерживает боль- шинство строковых методов, однако при доступе по индексу возвра- щается целое число, а не символ.

Тип bytearray — это изменяемая последовательность байтов. Данный тип аналогичен типу bytes, но вы можете изменять элементы такой строки по индексу. Также этот тип содержит дополнительные методы, которые позволяют добавлять и удалять элементы.

s = bytearray('AABAABAAАA', 'utf-8')
s[5] = bytes('A', 'utf-8')[0]
print(str(s, 'utf-8'))

Взято из Справочник PYTHON. Кратко, быстро, под рукой | Дубовик Е. В., Кольцов Д. М.

0

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Питон | Найти позицию символа в заданной строке

Улучшить статью

Сохранить статью

  • Уровень сложности: Easy
  • Последнее обновление: 12 янв, 2023

  • Читать
  • Обсудить
  • Улучшить статью

    Сохранить статью

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

    Метод 1: Получить позицию символа в Python с помощью rfind()

    Python String Метод rfind() возвращает самый высокий индекс подстроки, если он найден в данной строке. Если не найдено, возвращается -1.

    Python3

    string = 'Geeks'

    letter = 'k'

    print (string.rfind(letter))

    Выход

     3
     

    Метод 2: Получить позицию символа в Python с помощью регулярного выражения

    Метод re. search() либо возвращает None (если шаблон не совпадает), либо re.MatchObject содержит информацию о совпадающей части строки. Этот метод останавливается после первого совпадения,

    Python3

    0036

    pattern = 'for'

    match = (re.search(pattern, string))

     

    print ( "starting index" , match.start())

     

    print ( "start and end index" , match.span())

    Output

     starting index 5
    начальный и конечный индекс (5, 8)
     

    Method 3: Get the position of a character in Python using index()

    This Method raises Value Error in case the character is not present 

    Python3

    ini_string1 = 'xyze'

    C = "B"

    Печать ( "Начальный_.

    0034               "\ncharacter_to_find : " , c)

     

    try :

         res = ini_string1.index(c)

         print ( "символ {} в строке {} присутствует по адресу {}" . Формат (

    C, INI_STRING1,

    C, INI_STRING1,

    C, INI_STRING1,

    C, INI_STRING1,

    C, INI_STRING1,

    0036 STR (RES +

    1 ))

    За исключением ValueError As E:

    . " . формат (ini_string1))

    Вывод:

     initial_strings : xyze
    character_to_find : б
    Нет такого символа в строке xyze 

    Способ 4. Получение позиции символа в Python с помощью цикла

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

    Python3

    ini_string = 'abcdef'

     

    c = "b"

    print ( "initial_string : " , исходная_строка, "\ncharacter_to_find : " , c)

     

    res = None

    for i in range ( 0 , len (ini_string)):

         if ini_string[i] = = c:

             res = i + 1

             break

     

    if res = = None :

         print ( " В строке нет такого символа" )

    else :

         print ( 9003} "9 символов присутствует {присутствует} в {символе}"5}0036 . формат (c, str (res)))

    Вывод :

     Initialc_string:initialc
    character_to_find : б
    Символ b присутствует в 2 

    Метод 5: Получить позицию символа в Python, используя str.find

    Этот метод возвращает -1, если символ отсутствует.

    Python3

    ini_string = 'ABCDEF'

    INI_STRING2 = 'XYZE'

    C =

    5

    C =

    5 " C =

    5" C =

    5 " C =

    5" C =

    5 " C . , ini_string, " " ,

           ini_string2, "\ncharacter_to_find : " , c)

     

    res1 = INI_STRING.FIND (C)

    RES2 = INI_STRING2.FIND (C)

    Если 400036

    . :

    Печать ( "Нет такого символа в строке {}" . Формат (

    555).0003

    else :

         print ( "Character {} in string {} is present at {}" . format (

             c, ini_string, str (res1 + 1 )))

     

    if res2 = = - 1 :

         print ( "No such character available in string {}" . format (

             ini_string2))

    else :

    Печать ( "символ {} в строке {} присутствует по адресу {}" . Формат (

    5. 0036 STR (RES2 + 1 ))

    Выход:

     Начальный
    character_to_find : б
    Символ b в строке abcdef присутствует на 2
    Нет такого символа в строке xyze 

    Метод 6: получение позиции символа в Python с использованием понимания списка и следующей функции

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

    Python3

    def find_position(string, char):

        

        

         try :

           return 1 + следующий (i для i, c в перечислить (строка) если c0036 = char)

            

            

         except :

           

           return - 1

     

    string = 'xybze'

    char = 'b'

    print "_tial" s , строка)

    Печать ( "Характер_TO_FIND:" , war)

    (find_position (String, char) .

     начальные_строки: xybze
    character_to_find : б
    3 

    Временная сложность: O(n)
    Вспомогательный пробел: O(n)


    Статьи по теме

    Как искать в строке в Python

    Автор: Джон Пол Мюллер и

    Обновлено: 27 декабря 2021 г.

    Из книги: Начало программирования на Python для чайников

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

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

    • count( str , beg = 0, end =len( string )): подсчитывает, сколько раз str встречается в строке. Вы можете ограничить поиск, указав начальный индекс, используя beg , или конечный индекс, используя 9.0875 конец .

    • endwith( suffix , beg =0, end =len( string )): возвращает True, когда строка заканчивается символами, указанными suffix . Вы можете ограничить проверку, указав начальный индекс, используя beg , или конечный индекс, используя end .

    • find( str , beg =0, end =len( string )): Определяет, является ли str встречается в строке и выводит индекс местоположения. Вы можете ограничить поиск, указав начальный индекс, используя beg , или конечный индекс, используя end .

    • index( str , beg =0, end =len( string )): обеспечивает ту же функциональность, что и find(), но вызывает исключение, когда str не найден.

    • заменить( старый , новый [ max ]): Заменяет все вхождения последовательности символов, указанной в old в строке, на последовательность символов, указанную в new . Вы можете ограничить количество замен, указав значение max .

    • rfind( str , beg =0, end =len( string )): Обеспечивает ту же функциональность, что и find(), но выполняет поиск в обратном направлении с конца строки, а не с начала.

    • rindex( str , beg =0, end =len( string )): обеспечивает ту же функциональность, что и index(), но выполняет поиск в обратном направлении с конца строки, а не с ее начала.

    • startswith( prefix , beg =0, end =len(string)): возвращает True, если строка начинается с символов, указанных префиксом . Вы можете ограничить проверку, указав начальный индекс, используя beg или конечный индекс с использованием end .

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

      Вы видите редактор, в котором вы можете ввести пример кода.

    2. Введите в окно следующий код — нажимая Enter после каждой строки:

       SearchMe = "Яблоко красное, а ягода синяя!"
      print(SearchMe.find("есть"))
      print(SearchMe.rfind("есть"))
      print(SearchMe.count("есть"))
      print(SearchMe.startswith("The"))
      print(SearchMe.endswith("The"))
      print(SearchMe.replace("яблоко", "машина")
        .replace("ягода", "грузовик")) 

      Пример начинается с создания SearchMe, строки с двумя экземплярами слова . Эти два экземпляра важны, потому что они демонстрируют, как поиск отличается в зависимости от того, где вы начинаете. При использовании find() пример начинается с начала строки. Напротив, rfind() начинается с конца строки.

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

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

      Последний бит кода заменяет apple на car и berry на truck. Обратите внимание на способ размещения кода в две строки. В некоторых случаях ваш код должен быть размещен в нескольких строках, чтобы сделать его более читабельным.

    3. Щелкните Выполнить ячейку.

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

    Эта статья взята из книги:

    • Начало программирования на Python для чайников,

    Об авторе книги:

    Джон Пол Мюллер — независимый автор и технический редактор, автор более 107 книг и 600 статей.

    Оставить комментарий

    Добавить комментарий

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

    © 2019 Штирлиц Сеть печатных салонов в Перми

    Цифровая печать, цветное и черно-белое копирование документов, сканирование документов, ризография в Перми.