我想找到一个字符串的某些段并存储它们,但是,我需要存储大量的这些字符串,我认为将它们存储为主字符串的索引可能更优雅而不是作为字符串列表。我无法检索索引以供使用。例如:
index1 = [0:3, 4:8] #invalid syntax
index2 = ['0:3','5:6']
s = 'ABCDEFGHIJKLMN'
print(s[index2[0]]) #TypeError string indices must be integers
我是否以错误的方式思考这个问题?
答案 0 :(得分:14)
基于冒号的切片语法仅在索引运算符内有效,例如: x[i:j]
。相反,您可以在列表中存储slice
个对象,其中slice(x,y,z)
等同于x:y:z
,例如
index = [slice(0,3), slice(5,6)]
print([s[i] for i in index])
将打印:
['ABC', 'F']
答案 1 :(得分:4)
您存储索引而不是实际子串的想法很好。
至于机制,你应该将(开始,结束)数字存储为两个整数的元组:
index1 = [(0,3), (4,8)]
当重现子字符串时,请编写如下代码:
pair = index1[0] # (0,3)
sub = s[pair[0] : pair[1]] # 'ABC'