Как распечатать из расположения индекса строку из списка, содержащего расположения индекса

#python #list

Вопрос:

Я пытаюсь создать цикл, который будет искать строку для определенного слова, которое появляется несколько раз, а затем печатать следующие 12 символов, которые появятся после этого.

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

 a = [m.start() for m in re.finditer("username", str(Searchable_String))]
print("index Locations:", a)
 

Что дает мне результат в списке, как показано ниже.

 index Locations: [61, 216, 371, 526, 681, 836]
 

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

Я новичок в python и полностью застрял на этом этапе.

Спасибо

Ответ №1:

 for i in a:
   print(your_string_var[i:i 12])
 

Как это работает:

 string = "my explanation"

>>> print(string[0:2])
my
>>> print(string[0:1])
m
>>> print(string[0:2])
my
>>> print(string[2:])
 explanation
 

На практике вы можете разрезать строку, используя эти шаблоны :

string[start:end]

или

string[start:end:step] : Получить все символы от начала до конца-1 скидка на каждый символ шага

Поэтому , если у вас есть начальные позиции в списке, и вы хотите напечатать 12 символов после каждой позиции, которую вы можете зациклить в своем списке позиций, используйте позицию в качестве начала среза и позицию 12 в качестве конца среза.

Комментарии:

1. Объяснение того, как работает опубликованный код, поможет OP

2. Это сработало фантастически. Намного лучше, чем мой предыдущий метод повторения кода! Спасибо.

Ответ №2:

Как вы знаете, на самом деле вы создаете список python, а списки имеют индексы

Таким образом, вы можете написать код, подобный этому:

 for index in a:
    print(Searchable_String[index:])
 

который найдет индекс этого символа и с этого момента выведет остальную часть строки.

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

Термин

 Searchable_String[index:]
 

означает, что начните с индекса eg = 61 и распечатайте все дальше.