powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python 2.6 найти все вхождения подстроки в строке
13 сообщений из 13, страница 1 из 1
Python 2.6 найти все вхождения подстроки в строке
    #38254237
Mixail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста как Python 2.6 (Windows XP) найти все вхождения подстроки. Функция find() ищет только первое вхождение а как продолжить дальше искать до конца.
за ранее благодарю.
...
Рейтинг: 0 / 0
Python 2.6 найти все вхождения подстроки в строке
    #38254252
Фотография zirra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Mixail" <nospam@sql.ru>; wrote in message news:14283664@sql.ru...
Mixail
Подскажите пожалуйста как Python 2.6 (Windows XP) найти все вхождения подстроки. Функция find() ищет только первое
вхождение а как продолжить дальше искать до конца.
И какое слово тут непонятно?..
Код: sql
1.
2.
3.
string.find(s, sub[, start[, end]])
Return the lowest index in s where the substring sub is found such that sub is wholly contained in s[start:end]. Return -1 on 
failure. Defaults for start and end and interpretation of negative values is the same as for slices.



--
Vladimir A.Bakhvaloff E-Mail:bob<bark>bakh<dot>spb<dot>ru

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Python 2.6 найти все вхождения подстроки в строке
    #38255742
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MixailПодскажите пожалуйста как Python 2.6 (Windows XP) найти все вхождения подстроки. Функция find() ищет только первое вхождение а как продолжить дальше искать до конца.
за ранее благодарю.
Предположим, у Вас есть строка "АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА"
Вы хотите найти вхождения строки АА, что должно быть на выходе?
...
Рейтинг: 0 / 0
Python 2.6 найти все вхождения подстроки в строке
    #38256013
Mixail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на выходе хотел бы получить массив значений с которых начинается искомая подстрока
для дальнейшего манипулирования с ней (вставить перевод строки до или после искомой подстроки и тд и тп)
...
Рейтинг: 0 / 0
Python 2.6 найти все вхождения подстроки в строке
    #38256079
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем тогда find() для этого использовать если в итоге вы всёравно хотите воспользоваться replace() ом?
...
Рейтинг: 0 / 0
Python 2.6 найти все вхождения подстроки в строке
    #38256142
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто продолжить искать. До конца. И складывать в массив.
Те делать то, что хочется. Ну очевидно же.
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
#-*- coding: windows-1251 -*-
from string import *
def find_all(p_from,p_subs):
   l_ind=0
   l_res=[]
   l_next=find(p_from,p_subs,l_ind)
   while l_next>=0:
      l_ind=l_next+1
      l_res.append(l_next)
      l_next=find(p_from,p_subs,l_ind)
   return l_res

print find_all("АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА","АА")


- интереснее другое - что должен давать
find_all("АААААААААААААА","АА")
?
...
Рейтинг: 0 / 0
Python 2.6 найти все вхождения подстроки в строке
    #38256176
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или рекурсией.... покороче....
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#-*- coding: windows-1251 -*-
from string import *

def find_rec(p_from,p_subs,p_ind):
   l_next=find(p_from,p_subs,p_ind)
   if l_next==-1: return []
   else: return [l_next]+find_rec(p_from,p_subs,l_next+1)


print find_rec("АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА","АА",0)
...
Рейтинг: 0 / 0
Python 2.6 найти все вхождения подстроки в строке
    #38258329
Mixail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за пример,понятно в каком направлении "копать".
Только данный пример у меня возвращает результат почему то 0.

а в командном режиме почему то print find(s,"АА",n) выводит при индексе n=0 : 0, а при индексах n=1,2,3,4,5,6 : 6 ,а при n=7 : 28
s="АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА"
print find(s,"АА",0)
...
Рейтинг: 0 / 0
Python 2.6 найти все вхождения подстроки в строке
    #38259013
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автора в командном режиме почему то print find(s,"АА",n) выводит при индексе n=0 : 0, а при индексах n=1,2,3,4,5,6 : 6 ,а при n=7 : 28
s="АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА"
print find(s,"АА",0)
начиная с заданного места ищет и находит нужное вхождение.
с нулевой позиции - находит
" АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА"
=0

потом
s="АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА"
=6

потом
"АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА "
=28

а какой из примеров возвращает 0?
...
Рейтинг: 0 / 0
Python 2.6 найти все вхождения подстроки в строке
    #38259296
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mixail,

Воспользуйтесь регулярками:
Код: python
1.
2.
3.
4.
import re

for token in re.findall("АА", "АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА", re.IGNORECASE):
    print token
...
Рейтинг: 0 / 0
Python 2.6 найти все вхождения подстроки в строке
    #38259852
Mixail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
print find(s,"АА",n)
s="АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА"
В примере при n=0 он выводит 0 это правильно
при n=1 выводит 6 тоже правильно
а при n=2;n=3;n=4;n=5;n=6 почему то выводит опять 6 !!
и только при n=7 выводит 28

<<начиная с заданного места ищет и находит нужное вхождение.
с нулевой позиции - находит
"АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА"
=0

потом
s="АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА"
=6

потом
"АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА"
=28
>>

<<а какой из примеров возвращает 0? >>


############## Данный пример возвращает 0 ##############
#-*- coding: windows-1251 -*-
from string import *
def find_all(p_from,p_subs):
l_ind=0
l_res=[]
l_next=find(p_from,p_subs,l_ind)
while l_next>=0:
l_ind=l_next+1
l_res.append(l_next)
l_next=find(p_from,p_subs,l_ind)
return l_res

print find_all("АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА","АА")

##################
return l_res возвращает 0
...
Рейтинг: 0 / 0
Python 2.6 найти все вхождения подстроки в строке
    #38260513
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mixail,

Находит все вхождения с начальным и конечным индексами вхождения (группы):
Код: python
1.
2.
3.
4.
5.
6.
#-*- encoding: cp1251 -*-

import re

for m in re.finditer("АА", "АА ВВ АА ВВ ППП ООЛО РОЛ ОЛ АА"):
    print '%02d-%02d: %s' % (m.start(), m.end(), m.group(0))

Результат работы:
Код: sql
1.
2.
3.
00-02: АА
06-08: АА
28-30: АА
...
Рейтинг: 0 / 0
Python 2.6 найти все вхождения подстроки в строке
    #38260543
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В примере при n=0 он выводит 0 это правильно
при n=1 выводит 6 тоже правильно
а при n=2;n=3;n=4;n=5;n=6 почему то выводит опять 6 !!


- если ищем со второй позиции строку АА. Она где будет?
с третьей. И так далее.

Return the lowest index in s where the substring sub is found such that sub is wholly contained in s[start:end].
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python 2.6 найти все вхождения подстроки в строке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]