2015-05-02 2 views
3

Мне нужно разделить данные на третий разделитель, включая этот разделитель на выходе.Python 3: разделение на 3-й разделитель

Код

text = 'sitting on a couch sitting on a chair sitting on a bench' 

splitText = text.split('sitting')[1] 

print(splitText) 

Результат

на диване, сидя на стуле, сидя на скамейке

Желаемый результат

сидит на скамейке

Notes

  • SPLIT ФУНКЦИЯ НЕ ВКЛЮЧЕНО «сидит» в исходах при использовании его в качестве разделителя

  • «сидит» ДОЛЖНЫ БЫТЬ ВКЛЮЧЕНЫ В Итоговом

+0

Что такое 'resp'? –

+0

ошибка, я изменил ее на текст –

+0

Результат не то, что вы говорите. –

ответ

0

Вы можете использовать следующее регулярное выражение:

r'(sitting.*){2}' 

Это регулярное выражение будет соответствовать тексту, содержащему слово sitting 2 раза. Затем вы можете разделить text на re.split():

>>> text = 'sitting on a couch sitting on a chair sitting on a bench' 
>>> import re 
>>> re.split(r'(sitting.*){2}',text) 
['', 'sitting on a bench', ''] 

Вы можете получить результат с выражением генератора и next:

>>> next(i for i in re.split(r'(sitting.*){2}',text) if i) 
'sitting on a bench' 
1

Вы можете просто разделить на space перед тем sitting.

x="sitting on a couch sitting on a chair sitting on a bench" 
print re.split(r"\s(?=\bsitting\b(?:(?!\bsitting\b).)*$)",x)[1] 

Или split on 0 width assertion, который не существует в re модуля, но есть в regex модуле.

import regex 
x="sitting on a couch sitting on a chair sitting on a bench" 
print regex.split(r"(?=sitting)",x,flags=regex.VERSION1)[3] 

Или используйте findall.

x="sitting on a couch sitting on a chair sitting on a bench" 
print re.findall(r"(sitting.*?(?=sitting|$))",x)[2] 
0
import re 

text = 'sitting on a couch sitting on a chair sitting on a bench' 
splitText = re.findall('sitting.*?(?= sitting|$)', text) 

if len(splitText) >= 3: 
    print(splitText[2]) 

Эрик: "Это расщепляется регулярными выражениями, а не расщепление по индексу слова" - не было "регулярное выражение" тег в вопросе, то вы хотите использовать только индексы - вы можете использовать одну следующие образцы:

text = 'sitting on a couch sitting on a chair sitting on a bench' 
delim = 'sitting' 
text[text.find(delim, text.find(delim, text.find(delim)+1)+1):] 

или

def X(text, delim, n, pos=0): 
     idx = text.find(delim, pos) 
     if idx >= 0 and n > 0: 
       return X(text, delim, n-1, idx+1) 
     if n > 0: 
       return "" 
     if idx > 0: 
       return text[pos-1:idx] 
     return text[pos-1:] 


text = 'sitting on a couch sitting on a chair sitting on a bench' 
print(X(text, 'sitting', 3)) 
Смежные вопросы