我一直致力于使用Python 3.5.2从文件读取的程序,其中结果以表格的形式输出。我将数据存储为CSV(但作为文本文件)
我不确定为什么,但是当我运行该程序时,结果似乎在第一条记录后有两个空格缩进。
def display():
with open("StudentScores.txt","r") as Scores:
print("{0:<10} {1:<10} {2:<5}".format("\nFIRSTNAME","SURNAME","SCORE"))
for eachLine in Scores:
eachLine.strip()
each=eachLine.split(",")
print("{0:<10} {1:<10} {2:<5}".format(each[0],each[1],each[2]),end="",sep="")
我使用的文本文件:
Ralph,White,41
Maria,Cox,26
Sharon,Barnes,88
Eric,Garcia,31
Cheryl,Scott,60
Ron,Cooper,11
Lori,Ramirez,34
William,Jones,60
Evelyn,Baker,28
Janice,Sanders,10
Ralph,White,41
Maria,Cox,26
Sharon,Barnes,88
Eric,Garcia,31
Cheryl,Scott,60
Ron,Cooper,11
Lori,Ramirez,34
William,Jones,60
Evelyn,Baker,28
Janice,Sanders,10
最后我收到的输出(从IDLE复制)
FIRSTNAME SURNAME SCORE
Ralph White 41
Maria Cox 26
Sharon Barnes 88
Eric Garcia 31
Cheryl Scott 60
Ron Cooper 11
Lori Ramirez 34
William Jones 60
Evelyn Baker 28
Janice Sanders 10
Ralph White 41
Maria Cox 26
Sharon Barnes 88
Eric Garcia 31
Cheryl Scott 60
Ron Cooper 11
Lori Ramirez 34
William Jones 60
Evelyn Baker 28
Janice Sanders 10
有什么建议吗?我只在新笔记本电脑(Windows 10)上使用Python 3天,如果有任何帮助的话。
答案 0 :(得分:2)
当您从文件中读取行时:
for eachLine in Scores:
这些行包括末尾的换行符(如果文件缺少最终换行符,则可能是最后一行除外)。
致电strip
时:
eachLine.strip()
不会改变eachLine
。它返回一个新的剥离字符串,您可以立即忽略并丢弃该字符串。 eachLine
仍然有一个尾随换行符。
致电split
时:
each=eachLine.split(",")
each[2]
有该追踪换行符。
当您使用替换字段each[2]
打印{2:<5}
时,each[2]
包含2位数字和换行符。 <5
左对齐它在宽度为5的字段中,用空格填充结尾,因此它会打印两个数字,换行符和下一行两个空格。
要解决此问题,请实际存储strip
的返回值,停止填充分数字段,并停止传递end=""
。 sep=""
也是多余的,因为您一次只print
一个字符串:
def display():
with open("StudentScores.txt","r") as Scores:
print("{0:<10} {1:<10} {2}".format("FIRSTNAME","SURNAME","SCORE"))
for eachLine in Scores:
eachLine = eachLine.strip()
each = eachLine.split(",")
print("{0:<10} {1:<10} {2}".format(each[0],each[1],each[2]))
答案 1 :(得分:0)
更改此行:
print("{0:<10} {1:<10} {2:<5}".format(each[0],each[1],each[2]),end="",sep="")
对此:
# Just changing <5 to <3
print("{0:<10} {1:<10} {2:<3}".format(each[0],each[1],each[2]),end="",sep="")
它应该以您想要的格式打印。