2015-04-06 83 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

相关问题