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

标签 python string indexing splice

下面是一段长度约为+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'))

关于python - 字符串中的连续值,获取索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44642368/

相关文章:

excel - 根据下拉列表选择使用其他表中的数据填充空表

python - 如何获取XML中特定根的数据(通过python)

java - 将扫描仪输入永久存储到字符串中

python - 如何在Python中将多个字符变成一个字符?

计算字符串的单词

Java 索引越界异常

sql-server - 我应该在 SQL Server 中为位字段建立索引吗?

python - jose 加密返回二进制字符串,但使用解码后的字符串解密会在 python 中出现错误

python - 理解 "item for item in list_a if ..."Python

python - 在默认字典中保留相同的值