2016-02-28 4 views
0

Я написал фрагмент кода, который отправляет данные в CSV-файл, сортируя по имени, а затем 3 оценки из викторины. Мне нужно вызвать эти данные из созданного CSV-файла и отсортировать данные по алфавиту по имени, численно и по среднему значению. Однако, когда я пытаюсь сортировать имена по алфавиту, ничего не возникает. Я довольно новичок в Python, поэтому не вижу, где моя ошибка.Сортировка списка по алфавиту из CSV в Python по столбцу

Это часть моего кода, которая сохраняет и (пытается) печатать данные.

if class_number == 2: 
    f = open("Class 2" + ".csv", 'a') 
    writer = csv.writer(f, delimiter =',') 
    writer.writerow([name, count1, count2, count3]) 
    print ("Your scores were", count1, ",", count2, ", and", count3) 

    print("Would you like to see previous results?") 
    print("Press 1 to see previous results for your class. Press 2 to close the program") 
    answer = int(input()) 
    if answer == 1: 
     print("How would you like data to be sorted?") 
     print("Press 1 for alphabetically") 
     print("Press 2 for highest to lowest") 
     print("Press 3 for average") 
     score = input() 
     if score == 1: 
      sample = open("Class 2.csv", "r") 
      csv1 = csv.reader(sample, delimiter=",") 
      sort = sorted(csv1, key=operator.itemgetter(0)) 
      for eachline in sort: 
       print("Class 2.csv", "r") 

Я действительно смущен тем, что я делаю неправильно.

EDIT: Часть коды Мне нужна помощь в

if score == 1: 
      sample = open("Class 2.csv", "r") 
      csv1 = csv.reader(sample, delimiter=",") 
      sort = sorted(csv1, key=operator.itemgetter(0)) 
      for eachline in sort: 
       print("Class 2.csv", "r") 

Эта часть не будет отображаться для какой-либо причины, но без «Если оценки» часть будет отображаться.

+0

Что это за проблема? какая часть кода? – Arman

ответ

0

Я тестировал это с помощью CSV-файла с одним столбцом, и он работал. Я предполагаю, что вы хотите, только чтобы показать свой результат

import csv 
import operator 

sample = open("file.csv", "r") 
csv_file = csv.reader(sample, delimiter=",") 
sort = sorted(csv_file) 
for eachline in sort: 
    print eachline 
0

Вы можете использовать словарь, чтобы сохранить данные, считанные из файла CSV. И используйте имена в качестве ключа. Затем вы можете отсортировать ключи и создать отсортированный список на основе отсортированных ключей. Вот пример сортировки с именами.

sample = open("example.csv", "r") 
csv_file = csv.reader(sample, delimiter=",") 

named = {} 
for line in csv_file: 
    # in case there are multiple entries with same name 
    # assuming names are in the first column 
    named[line[0]] = named.get(line[0]) or [] 
    named[line[0]].append(line) 

sorted_name_key = sorted(named) 
name_sorted = [] 
for key in sorted_name_key: 
    name_sorted.extend(named[key]) 

Этот способ позволяет выполнить сортировку для любого столбца, который вы хотите.

Смежные вопросы