2016-10-06 5 views
0

Я застрял в этой проблеме python часами. Я пытаюсь понять, как записать данные, которые могут быть введены вручную в файл txt, таким образом, чтобы они отображались в таблице из двух столбцов. Содержимое в name_array должно быть заголовком, а содержимое в data_array - это фактические части данных.Как отображать данные в табличном формате в txt-файле

name = str(raw_input("Enter the student's name: ")) 
medianScore = float(raw_input("Enter the median group score for quizzes:")) 
indScore = float(raw_input("Enter the score of the individual quiz: ")) 
assignmentScore = float(raw_input("Enter the score of the assignment: ")) 
test1Score = float(raw_input("Enter the score of exam one: ")) 
test2Score = float(raw_input("Enter the score of exam two: ")) 
test3Score = float(raw_input("Enter the score of the final exam: ")) 
fileName = str(raw_input("Enter the name of the file you would like to create: ")) 
f = file(fileName + ".txt" , a) 

finalScore = ((medianScore * .14) + (indScore * .14) + (assignmentScore * .12) + (test1Score * .15) +(test2Score * .20) + (test3Score * .25)) 
data_array = [name, finalScore, test3Score, test1Score, test2Score, assignmentScore, indScore, medianScore] 
name_array = [ "Student", "Final Grade", "Final Exam", "Exam 1", "Exam 2", "Assignments", "Solo Quizzes", "Group Quizzes"] 
+0

Вы можете исправить параметр 'a' в' файле' – Batsu

ответ

1

Если вы хотите, чтобы просто вывести CSV-подобный файл, который вы можете использовать csv пакет:

import csv 

writer = csv.writer(f, delimiter='\t') 
writer.writerow(name_array) 
writer.writerow(data_array) 

Он будет:

Student Final Grade Final Exam Exam 1 Exam 2 Assignments Solo Quizzes Group Quizzes 
asd 3.88 6 4 5 3 2 1 

В этот пример использует tab s как разделитель, но вы можете использовать его любым желаемым символом. Дополнительную информацию см. В разделе this documentation.


Вместо если вы хотите что-то более читаемый человеком вы можете использовать Intead в tabulate пакет:

from tabulate import tabulate 

f.write(tabulate([data_array], headers=name_array)) 

Он будет производить:

Student  Final Grade Final Exam Exam 1 Exam 2 Assignments Solo Quizzes Group Quizzes 
--------- ------------- ------------ -------- -------- ------------- -------------- --------------- 
asd     3.88    6   4   5    3    2    1 

См this documentation дополнительные параметры для форматирования Таблица.

+0

Это сработало! Благодаря тонну! Я навсегда застрял на этом. – Caladin00

+0

какой из двух решений вы выбрали? – Batsu

-1

Вы пробовали что-то вроде:

output_file = 'out.txt' 
with open(output_file, 'r+') as file: 
    file.write('\t'.join(name_array) + '\n') 
    file.write('\t'.join(data_array) + '\n') 
+0

Я боюсь, что это не работает. Он говорит, что каталог не существует – Caladin00

+0

Попробуйте «x» в открывшемся файле – Nf4r