2015-05-06 62 views
7

我想查找某個字符串的某些段並將其存儲,但是,我需要存儲大量這些字符串,並且我認爲將它們存儲爲主字符串的索引而不是字符串列表。我無法檢索使用的索引。例如:如何將索引存儲在列表中

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

如果存儲子,而不是指數 - 這不就是Python會如何將它們存儲在內部呢? –

回答

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'] 
4

您的存儲索引而不是實際的子串的想法是一個好主意。

至於機制,你應該數字存儲(起點,終點)作爲兩個整數的元組:

index1 = [(0,3), (4,8)] 

當它的時間來再現子,寫這樣的代碼:

pair = index1[0] # (0,3) 
sub = s[pair[0] : pair[1]] # 'ABC'