以下是长度约为+1000的python字符串。

string1 = "XXXXXXXXXXXXXXXXXXXXXAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBB........AAAAXXXXX"
len(string1)  ## 1311


我想知道连续X的结尾和非X字符开始的位置的索引。从左到右读取此字符串,第一个非X字符位于索引位置22,而从右边的第一个非X字符位于索引位置1306。

如何找到这些指数?

我的猜测是:

for x in string1:
    if x != "X":
        print(string.index(x))


问题是它输出所有不是X的索引。它没有给我连续X结束的索引。

更让我困惑的是如何“检查”连续的X。假设我有以下字符串:

string2 = "XXXXAAXAAAAAAAAAAAAAAABBBBBBBBBBBBBB........AAAAXXXXX"


在这里,连续的X在索引4处结束,而不是索引7。我如何检查前面的几个字符是否真的不再连续?

最佳答案

如果我很了解您的问题,请执行以下操作:

def getIndexs(string):
  lst =[]
  flag = False
  for i, char in enumerate(string):

    if char == "x":
      flag = True

    if ((char != "x") and flag):
      lst.append(i-1)
      flag = False


  return lst


print(getIndexs("xxxxbbbxxxxaaaxxxbb"))



  [3,10,16]

07-24 09:51
查看更多