2015-04-06 22 views
0
correctAnswers = ['A','C','A','A','D','B','C','A','C','B','A','D','C','A','D','C','B','B','D','A'] 

studentAnswers = [] 
correctList = [] 
file = open('forchapter7.txt','r') 

student = file.readline() 
student = student.rstrip('\n') 
studentAnswers.append(student) 

while student != '': 

    student = file.readline() 
    student = student.rstrip('\n') 
    studentAnswers.append(student) 

print(studentAnswers) 
print(correctAnswers) 


file.close()  

#displays this 

['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', ''] 
['A', 'C', 'A', 'A', 'D', 'B', 'C', 'A', 'C', 'B', 'A', 'D', 'C', 'A', 'D', 'C', 'B', 'B', 'D', 'A'] 

我的文本文件是一個純以字母AT下降和T後面沒有空格或新行,爲什麼.txt文件我的循環是寫空白空間嗎?Python的,爲什麼我的循環寫一個空格,從文本文件列表的末尾

+0

也許文件末尾有空行?請注意,您在追加後測試*。 – cdarke

回答

1

當你讀到最後一行student == 'T'時,循環會重複。當您在完成整個文件的閱讀後嘗試登錄file.readline()時,它將返回'',因爲沒有別的可讀的內容。然後您將其添加到您的列表中。

添加到列表之前只需添加爲空字符串檢查:

if student: 
    studentAnswers.append(student) 

編輯: 你可以使用另一種方法是用file.readlines()閱讀所有的線路和遍歷列表。這將無法運行該循環的額外時間:

for student in file.readlines(): 
    studentAnswers.append(student.rstrip('\n') 

你甚至可以使用列表理解是這樣的:

studentAnswers = [student.rstrip('\n') for student in file.readlines()] 

但是請注意,如果該文件確實有一個空行,後面兩個方法將需要檢查以防止他們向列表添加空條目。

+0

我試過這樣的事情,把它放在它之前,甚至讀了它現在有意義的行,謝謝。 – alkalinear

相關問題