【发布时间】:2017-11-22 08:48:05
【问题描述】:
以下是长度约为+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 吗?在您的示例中,字符串中有不同的连续 X 序列。另外,你究竟是如何收集它们的?您的预期输出结构是什么?
-
@idjaw 只是一个简单的字符串。我想知道连续 X 的结束位置。给出了字符串。输出应该只是不再有连续 X 的索引。
-
好的,但是例如在你的第一个字符串中,开头有一个 X 序列,但是在同一个字符串的末尾有另一个 X 序列。你只是在寻找第一个吗?
-
@idjaw 不,我想要两个索引。在这些字符串中,连续的 X 仅位于开头和结尾。抱歉——我没有说清楚。
-
对。和我想的一样。那么,你想如何显示这个?您是否希望以
[(0, 10), (200, 224)]之类的结构收集这些信息?您可能也应该在问题中编辑其细节。
标签: python string indexing splice