πŸ”Ž Как Π½Π°ΠΉΡ‚ΠΈ всС индСксы символа Π² строкС Python?

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ всС индСксы символа Π² строкС Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ findall() ΠΈΠ· модуля re (рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅) ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ enumerate() Π² Ρ†ΠΈΠΊΠ»Π΅ for.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с использованиСм findall():

import re

string = "ΠŸΡ€ΠΈΠΌΠ΅Ρ€ строки Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅"
symbol = 'ΠΎ'
indexes = [i.start() for i in re.finditer(symbol, string)]
print(indexes)

А Π²ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с использованиСм enumerate():

string = "ΠŸΡ€ΠΈΠΌΠ΅Ρ€ строки Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅"
symbol = 'ΠΎ'
indexes = [index for index, char in enumerate(string) if char == symbol]
print(indexes)

Π’ ΠΎΠ±ΠΎΠΈΡ… случаях Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ список индСксов символа 'ΠΎ' Π² строкС.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Π½Π°ΠΉΡ‚ΠΈ всС индСксы символа Π² строкС Python

Когда ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с тСкстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Python, ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ всС индСксы, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… находится ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ символ Π² строкС. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим нСсколько способов Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ.

1. ИспользованиС Ρ†ΠΈΠΊΠ»Π° for

Один ΠΈΠ· способов Π½Π°ΠΉΡ‚ΠΈ всС индСксы символа Π² строкС - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» for. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ всС символы Π² строкС ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, совпадаСт Π»ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ символ с искомым символом. Если совпадСниС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, ΠΌΡ‹ добавляСм индСкс Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ символа Π² список Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².


def find_indexes_with_for_loop(string, target_char):
    indexes = []
    for index, char in enumerate(string):
        if char == target_char:
            indexes.append(index)
    return indexes

Для Π²Ρ‹Π·ΠΎΠ²Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, просто ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ строку ΠΈ символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ:


string = "ΠŸΡ€ΠΈΠΌΠ΅Ρ€ строки для поиска"
target_char = "ΠΎ"
indexes = find_indexes_with_for_loop(string, target_char)
print(indexes) # Output: [4]

2. ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° find()

Python прСдоставляСт встроСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ find(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π½Π°ΠΉΡ‚ΠΈ индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ вхоТдСния символа Π² строкС. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ рСкурсивно Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, пСрСдавая ΠΎΡΡ‚Π°Π²ΡˆΡƒΡŽΡΡ Ρ‡Π°ΡΡ‚ΡŒ строки послС Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ индСкса.


def find_indexes_with_find_method(string, target_char, start_index=0):
    index = string.find(target_char, start_index)
    if index == -1:
        return []
    indexes = find_indexes_with_find_method(string, target_char, index + 1)
    return [index] + indexes

Π’Ρ‹Π·ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ:


string = "ΠŸΡ€ΠΈΠΌΠ΅Ρ€ строки для поиска"
target_char = "ΠΎ"
indexes = find_indexes_with_find_method(string, target_char)
print(indexes) # Output: [4]

3. ИспользованиС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° списка

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списка - это ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ способ создания списка с использованиСм Ρ†ΠΈΠΊΠ»Π° ΠΈ условия. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списка для нахоТдСния всСх индСксов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… находится искомый символ Π² строкС.


def find_indexes_with_list_comprehension(string, target_char):
    indexes = [index for index, char in enumerate(string) if char == target_char]
    return indexes

Π’Ρ‹Π·ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ:


string = "ΠŸΡ€ΠΈΠΌΠ΅Ρ€ строки для поиска"
target_char = "ΠΎ"
indexes = find_indexes_with_list_comprehension(string, target_char)
print(indexes) # Output: [4]

4. ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° re.findall()

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ всС индСксы символа, Π½ΠΎ ΠΏΡ€ΠΈ этом ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² строкС, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ re (рСгулярныС выраТСния). ΠœΠ΅Ρ‚ΠΎΠ΄ re.findall() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список всСх Π½Π΅-ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΡ…ΡΡ совпадСний рСгулярного выраТСния.


import re

def find_indexes_with_regex(string, target_char):
    pattern = re.compile(target_char)
    indexes = [match.start() for match in pattern.finditer(string)]
    return indexes

Π’Ρ‹Π·ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ:


string = "ΠŸΡ€ΠΈΠΌΠ΅Ρ€ строки для поиска"
target_char = "ΠΎ"
indexes = find_indexes_with_regex(string, target_char)
print(indexes) # Output: [4]

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько способов Π½Π°ΠΉΡ‚ΠΈ всС индСксы символа Π² строкС Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящий для вашСго случая ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² своСм ΠΊΠΎΠ΄Π΅. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ индСксы Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с 0 ΠΈ ΠΎΡ‚ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° строки.

Π£Π΄Π°Ρ‡ΠΈ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Python!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π£Ρ€ΠΎΠΊ 10 Π‘Ρ‚Ρ€ΠΎΠΊΠΈ: индСксы ΠΈ срСзы Python

Π£Ρ€ΠΎΠΊΠΈ Python / Как Π½Π°ΠΉΡ‚ΠΈ символ Π² строкС

#9. Знакомство с индСксами ΠΈ срСзами строк | Python для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”Ž Как записываСтся цСлочислСнноС Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² Python - ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ руководство

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Ρ‡Π΅Ρ€Π΅Π· python: ΠΏΠΎΠ»Π½Ρ‹ΠΉ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

🌳 Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ Π² Python? Руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°

πŸ”Ž Как Π½Π°ΠΉΡ‚ΠΈ всС индСксы символа Π² строкС Python?

πŸ“… Как ΡƒΠ·Π½Π°Ρ‚ΡŒ дСнь Π½Π΅Π΄Π΅Π»ΠΈ Π² Python: самый простой способ Π² 2021 Π³ΠΎΠ΄Ρƒ

πŸ”§ Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pip? ПолСзноС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… 🐍

πŸ”’ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство символов Π² спискС ΠΏΠΈΡ‚ΠΎΠ½? 🐍