Python:如何不使用索引从字符串中获取子字符串?

0 投票
1 回答
610 浏览
提问于 2025-04-16 13:22

我有一个字符串

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]

撰写回答