2016-11-27 28 views
1

即時消息讀取一些信息的文件,每個部分用@分隔,但是在每一行我都希望它是一個不同的數組,所以我做了這個,我不知道爲什麼它不工作。。從文件中拆分並放入一個數組

main_file = open("main_file.txt","r") 
main_file_info=main_file.readlines() 

test=[] 
n=0 
for line in main_file_info: 
     test[n]=line.split("@") 

test=test[n][1:len(test)-1] # to get rid of empty strings at the start and the end 
print(test)# see what comes out 

main_file.close() 
+0

你能告訴什麼輸出你好嗎?請發佈您的輸入文件的樣本。 – Jarvis

+0

即時通訊沒有得到任何錯誤:回溯(最近呼叫最後): 文件「C:\ Users \ Dominic \ Desktop \ Homework creator \ reading files.py」,第14行,在 test [n] = line.split(「@」) IndexError:列表分配索引超出範圍 –

+0

我在陳述中添加了一個= n + 1,它仍然執行相同的 –

回答

0

要插入的line.split("@")清單中的輸出的方式是錯誤的。你的列表沒有初始化,因此,你不能簡單地將任何東西分配給列表中的任何元素。所以,你需要做的是這樣的:

test.append(line.split("@")) 

或者,您可以初始化列表如下:

test = [[]]*(len(main_file_info)) 
+0

這工作,但我仍然在開始時獲得空字符串,結尾 –

+0

它給了我這個輸出:[['','1','1','A','3','none','3','\ n'],['','2' ,'2','B','3','1','2','\ n']] –

+0

在這種情況下,執行以下操作:'new_test = [filter in this test] ',這將刪除列表中任何位置的空字符串。 @DominikPraski – Jarvis

0
test = [None for _ in range(total)] 
# instead of test = [] 

或只是簡單地追加到test

test.append(line.split("@")) 
相關問題