2015-10-03 2 views
1

Например:найти все индексы подстроки данной строки, содержащей его в Python

my_string = "hi how are you?/nIs everything ok?/nAre you happy?" 

Мне нужно составить список, содержащий все индексы символа новой строки - (/ п). Как я могу это сделать?

+1

Похоже, это адресовано здесь: http://stackoverflow.com/questions/2294493/ how-to-get-the-position-of-a-character-in-python – yano

+0

@msw Это близко, но не большой дубликат. Эти решения будут находить положение * first *, а не * все * позиции. ** Изменить ** Я вижу [один ответ] (http://stackoverflow.com/a/32794963/2296458) внизу, который охватывает это, в этом случае дубликат является подходящим. – CoryKramer

ответ

1
import re 
my_string = "hi how are you?/nIs everything ok?/nAre you happy?" 
list = [m.start() for m in re.finditer('/n', my_string)] 
+0

Я думаю, что вы оставили ненужное '(' в начале понимания списка: '([m.start() для m в re.finditer ('/ n', my_string)]' –

+0

@JoeYoung Действительно, – grael

1

Вы можете использовать enumerate в списке понимания, чтобы создать список индексов.

>>> [index for index, value in enumerate(my_string) if value == '\n'] 
[15, 33] 

Кстати, новая линия характер '\n' не '/n' (обратите внимание на слэш)

+0

К сожалению, это не имеет никакого отношения к вопросу о неофите, у которого теперь есть рабочий кусок в руке, но не объясняет, почему этот кусок что-то делает. Напротив, ответ Бендерски на дублированный вопрос объясняет что 'find' является примитивным для поиска внутри строки и дает дополнительные объяснения относительно того, как составить его для« всех экземпляров ». Другие ответы в этой цепочке дополняют первый ответ. Напротив, ответ Дали, о котором идет речь , полагается на тот же случайный эффект и не дает никаких объяснений. – msw

Смежные вопросы