Python:如何不使用索引从字符串中获取子字符串?
我有一个字符串
s = "* * * * * * * = a b = c b = * * * * * * * "
我想要打印出每个不等于 "*" 的项目,前后各包含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 个回答
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]