2015-10-20 24 views
0

我想實現下面的代碼:在Python中實現導致「字符串索引超出範圍」錯誤的大數據集?

with open('datapath') as f: 
    k_mers = f.read() 

k_mers_parsed = [] 

for i in k_mers.split('\n'): 
    k_mers_parsed.append(i) 
genome = k_mers_parsed[0] 
for i in range(1,len(k_mers_parsed)): 
    genome = genome + k_mers_parsed[i][-1] 

with open('filepath', 'w') as out: 
out.write(genome) 

讀取大約有4行代碼工作完全一個文件,我產生一個快速的方式所需要的解決方案集。

但是,每當我試圖導入大型數據集,其中一個說,1000線,我得到這個錯誤:

genome = genome + k_mers_parsed[i][-1] 
IndexError: string index out of range 

是什麼這個根本原因,我怎麼能解決這個問題?

回答

1

您可能在文件中有空行。 也試試這個:

with open('datapath') as f: 
    genome = [l[-1] for l in f if l] 
0

的問題是不是因爲閱讀1000線。正是因爲有一些線路

即)

st=""" 
    ...: 
    ...: 
    ...: asd 
    ...: """ 

print st 
'\n\n\nasd\n' 

lst=st.split("\n") 

print lst 
['', '', '', 'asd', ''] 

print lst[1][-1] 
--------------------------------------------------------------------------- 
IndexError        Traceback (most recent call last) 
<ipython-input-65-82ba25ef865c> in <module>() 
----> 1 print lst[1][-1] 

IndexError: string index out of range 

我的補救措施沒有數據解決這個問題將是一個三元表達式

code:

print lst[1][-1] if len(lst[1])>0 else "None" 

你的情況:

genome = genome + k_mers_parsed[i][-1] if len(k_mers_parsed[i])>0 else " " 
相關問題