2011-03-09 28 views
0

我有一個字符串Python:如何從沒有索引的字符串中獲取子串?

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. 

任何人都可以請幫助我嗎?

+1

這功課嗎? – 2011-03-09 19:36:32

回答

2

使用enumerate()讓您同時擁有當前項目和可用其索引:

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

注意:如果它是有可能存在在設定的起始位置爲少於7個*字符,你可能希望使用稍微不同的最後一行:

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

這很好!非常感謝。 – May 2011-03-10 08:36:21

相關問題