2011-03-09 4 views
0

나는 문자열을파이썬 : 어떻게 인덱스없이 문자열에서 부분 문자열을 얻을 수 있습니까?

s = "* * * * * * * = a b = c b = * * * * * * * " 

을하고 난 모든 항목에 대해 인쇄하고 싶은 = "*"7 개 전 항목과 후 (7), 예를 들어 문자열이 :!

* * * * * * * = a b = c b = * 
* * * * * * = a b = c b = * * 
* * * * * = a b = c b = * * * 
* * * * = a b = c b = * * * * 
* * * = a b = c b = * * * * * 
* * = a b = c b = * * * * * * 
* = a b = c b = * * * * * * * 

사용하여 시도하는 경우 이 같은 지수 :

items = s.split(' ') 
    for i in items: 
     s = items.index(i) 
     start = s - 7 
     stop = s + 8 
     print items[start:stop] 

문제는 요소가 목록에서 두 번째로 나타나는 경우, 스크립트가 목록에있는 첫 등장의 인덱스를 소요하고 당신이 얻을 수 있습니다 :

* * * * * * * = a b = c b = * 
* * * * * * = a b = c b = * * 
* * * * * = a b = c b = * * * 
* * * * * * * = a b = c b = * etc. 

아무도 도와 줄 수 있습니까?

items = s.split(' ') 
for index, item in enumerate(items): 
    if item != "*": 
     print items[index-7:index+8] 

참고 :

+1

이 숙제입니까? –

답변

2

사용 enumerate() 당신이 현재 항목과 사용 가능한 인덱스 모두 가지고 그래서 거기에 대한 설정의 시작 미만 7 개 * 문자가 될 수 있다면, 당신은 할 수 있습니다 약간 다른 최종 줄을 사용하십시오.

 print items[max(index-7,0):index+8] 
+0

잘 작동합니다! 고마워. – May

관련 문제