排序文本文件后打印到新行

时间:2015-02-03 09:25:28

标签: python sorting

对于我的任务,我必须能够在排序后打印文本文件中的数据。我已经能够对它进行排序,但它不会将它打印到新的行,即使在记事本中它们是在单独的行上。

我的记事本文件有这个: 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']

请告诉我是否需要添加任何内容。

3 个答案:

答案 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