Skip to main content
 首页 » 编程设计

python之字符串中的连续值,获取索引

2025年05月04日25shanyou

下面是一段长度约为+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。我如何检查前面的几个字符是否真的不再连续?

请您参考如下方法:

使用正则表达式,拆分第一组和最后一组 X,获取它们的长度以构建索引。

import re 
 
mystr = 'XXXXAAXAAAAAAAAAAAAAAABBBBBBBBBBBBBB........AAAAXXXXX' 
xs = re.split('[A-W|Y-Z]+', mystr) 
indices = (len(xs[0]), len(mystr) - len(xs[-1]) - 1) 
# (4, 47) 

I simply need the outputs for the indices. I'm then going to put them in randint(first_index, second_index)

可以像这样将索引传递给函数

randint(*indices) 

但是,我怀疑您想使用 randint(first_index, last_index) 的输出从中间选择一个随机字符,这将是一个更短的选择。

from random import choice 
randchar = choice(mystr.strip('X'))