对于我的任务,我必须能够在排序后打印文本文件中的数据。我已经能够对它进行排序,但它不会将它打印到新的行,即使在记事本中它们是在单独的行上。
我的记事本文件有这个: http://i.stack.imgur.com/Xn0pT.png
我已经设置的代码是:
file = open(class_name , 'a') #opens the file in 'append' mode so you don't delete all the information
name = (name)
file.write(str(name + " : " )) #writes the information to the file
file.write(str(score))
file.write('\n')
file.close() #safely closes the file to save the information
viewscore = input("Do you wish to view previous results for your class").lower()
if viewscore == "yes".lower():
f = open(class_name , "r")
lines = [line for line in f if line.strip()]
f.close()
lines.sort()
print (lines)
我的变量是:
class_name = class_name + ".txt"
name = input().title()
然后在运行输出时我得到:
['Dan : 0\n', 'Jana : 0\n', 'Kyle : 0\n']
请告诉我是否需要添加任何内容。
答案 0 :(得分:0)
这是我的工作版本:
class_name = 'data.txt'
name = 'Jim'
score = 100
file = open(class_name , 'a') #opens the file in 'append' mode so you don't delete all the information
line_data = name + " : " + str(score) + "\n" # data to write
file.write(line_data)
file.close() #safely closes the file to save the information
viewscore = raw_input("Do you wish to view previous results for your class?").lower()
if viewscore == "yes".lower():
f = open(class_name , "r")
lines = [line for line in f if line.strip()]
f.close()
lines.sort()
for line in lines:
print line
else: # add else case to debug
print 'no for', viewscore
首先,您可以将要写入的行放在变量中,然后将其写入。
其次,如果您使用Python2.x,请使用raw_input()
作为输入字符串。
第三,如果您有if
,最好编写else
以便于调试代码。
答案 1 :(得分:0)
您应该尝试使用此代码。你为什么分开写3件事?它可能是作为一个字符串写的,而不是把东西放在新的一行。
f.write(name+' : '+str(score)+'\n')
答案 2 :(得分:0)
您要打印的内容是您调用的lines
列表,您看到输出的方式是显示类型列表的方式。您要做的是将列表的内容打印为一个字符串。为此,您可以join
内容如下:
In [1]: lines = ['Dan : 0\n', 'Jana : 0\n', 'Kyle : 0\n']
In [2]: print "".join(lines)
Dan : 0
Jana : 0
Kyle : 0