2016-02-14 3 views
-1

Я работаю над продуктом Python, который читает из текстового файла и добавляет цифры и показывает результат на экране. Вот мой код. Он работает, но я хотел бы немного изменить результат. Кроме того, есть способ, которым я могу изменить код, чтобы объяснить очень новую программу (Мой брат в 10 классе, который будет начинать Python в качестве своего самого первого языка программирования). Обратите внимание, что это не файл CSV и не должен использоваться как таковой. Это текстовый файл с содержимым, разделенным запятой.Как изменить формат и вывод для этого кода

import sys 

readFile = open("Products.txt", "r") 
#reportfile = open("report.txt", "w") 
reportfile = sys.stdout 

Categories_seen = [] 
Current_category = None 
Category_sum = 0 
Total_sum = 0 

line = readFile.readline() 

for line in readFile: 
    category,product,sales2014,sales2015 = line.strip().split(',') 
    sales2015 = int(sales2015) 

    if category not in Categories_seen: 
     if Current_category is not None: # Subroutine, if possible 
      print(Current_category, 
       Category_sum, file=reportfile) 
     Current_category = category 
     Category_sum = sales2015 
     Total_sum += sales2015 
     Categories_seen.append(Current_category) 
    elif Current_category == category: 
     Category_sum += sales2015 
     Total_sum += sales2015 

if Current_category is not None: # Subroutine, if possible 
    print("Total sales for", Current_category, "in 2015:", 
     Category_sum, file=reportfile) 

print("----------", file=reportfile) 
print("Total sales for the farmer in 2015:", Total_sum, file=reportfile) 

Сейчас выход приходит как

Vegetables 25691 
Fruits 11796 
Total sales for Condiments in 2015: 17649 
---------- 
Total sales for the farmer in 2015: 55136 

But I would like the out to be like 
Products  : Sales 
Vegetables : 25691 
Fruits  : 11796 
Total sales for Condiments in 2015: 17649 
---------- 
Total sales for the farmer in 2015: 55136 

И текстовый файл, из которого он читает как выглядит

PRODUCT,CATEGORY,2014 Sales,2015 Sales 
Vegetables,Potatoes,4455,5644 
Vegetables,Tomatoes,5544,6547 
Vegetables,Peas,987,1236 
Vegetables,Carrots,7877,8766 
Vegetables,Broccoli,5564,3498 
Fruits,Apples,398,4233 
Fruits,Grapes,1099,1234 
Fruits,Pear,2342,3219 
Fruits,Bananas,998,1235 
Fruits,Peaches,1678,1875 
Condiments,Peanut Butter,3500,3902 
Condiments,Hot Sauce,1234,1560 
Condiments,Jelly,346,544 
Condiments,Spread,2334,5644 
Condiments,Ketchup,3321,3655 
Condiments,Olive Oil,3211,2344 
+0

"текстовый файл с его содержимым, разделенным запятой". Вы только что описали файл CSV (Comma Separated Variables). – Ian

+0

Ну, мы должны использовать CSV в коде –

+0

@Ian Comma Separated * Значения * –

ответ

1

То, что вы хотите сделать, чтобы изменить формат вывода, является вызовите метод с именем format на так называемой строке . Вы изменили бы свою линию print(Current_category, Current_sum, file=reportfile) к чему-то более, как:

print("{:15}:{:<10}".format(Current_category, Current_sum)) 

Это будет выводить значение Current_category, выравнивание по левому краю, в поле, которое находится в 15 символов в ширину, а затем напечатать двоеточие, а затем выводить значение Current_sum, снова влево, в поле шириной десять символов. Каждый набор фигурных скобок подобен отверстию, которое заполняет соответствующая переменная, заданная вызову format, и загадочный материал внутри фигурных скобок сообщает format, как вы хотите, чтобы отображаемая переменная отображалась. Существует множество опций и информации here. Не пытайтесь запоминать все, но читайте его немного, взглянув, в частности, на примеры и раздел под названием «мини-язык спецификации формата». Вы должны поиграть с этим немного в оболочке python, пока он не станет привычным.

Счастливое обучение.