Печать элементов из файла csv с использованием raw_input

Как распечатать элементы из CSV-файла с помощью raw_input?

Код:

import csv

inputYear = raw_input('Please enter the year: ')
inFile = open('babyQldAll.csv', 'rU')
cvsFile = csv.reader(inFile, delimiter=',')

dict = {}

for row in  cvsFile:
    year, name, count, gender = row  

    if (year == inputYear) and (gender == 'Boy'):
        dict[name] =  count

        print('Popular boy names in year %s are:' % inputYear)

# According to informaiton in 'dict',  print (name, count) sorted by 'name' in alphabetical order         

print("Print boy names... ")    
inFile.close()

Желаемый результат:

Популярные имена мальчиков в 2010 году: Эйдан 112 Эйден 168 Алекс 93


person RelientFX    schedule 23.05.2015    source источник
comment
Пожалуйста, пометьте это как python2.7(?), так как Python 3 не имеет raw_input().   -  person too honest for this site    schedule 23.05.2015
comment
Можете ли вы привести образец содержимого файла?   -  person shruti1810    schedule 23.05.2015
comment
2010, Джон, 124 года, Мужчина / n 2010, Эми, 111 лет, Женщина   -  person RelientFX    schedule 23.05.2015
comment
Файл содержит как имена мальчиков, так и имена девочек, мне просто нужны имена мальчиков и их количество.   -  person RelientFX    schedule 23.05.2015
comment
Извините, выход не .. мужчина и ... женщина; женщина и мужчина меняются местами, чтобы быть мальчиком и девочкой, поэтому условие состоит в том, чтобы искать все имена мальчиков ...   -  person RelientFX    schedule 24.05.2015


Ответы (1)


Вы можете попробовать это:

inputYear = raw_input('Please enter the year: ')

file1 = open('babyQldAll.csv','r')
fileContent = file1.readlines()
fileRows = fileContent[0].split("\\n")

dict = {}
for row in fileRows:
    year = row.split(',')[0].strip()
    name = row.split(',')[1].strip()
    count = row.split(',')[2].strip()
    gender = row.split(',')[3].strip()
    if (year == inputYear) and (gender == 'Boy'):
        dict[name] =  count
odDict = sorted(dict.items())
str = ''
for i in odDict:
    str = str + i[0] + ' ' + i[1] + ' '

print('Popular boy names in year '+ inputYear + ' are: ' + str)
file1.close()
person shruti1810    schedule 23.05.2015
comment
Это дает результат для меня. Какую версию Python вы используете? 2.7 верно? - person shruti1810; 24.05.2015
comment
Можете ли вы поставить print fileRows чуть выше dict= {} и print year, gender чуть выше if (year == inputYear) and (gender == 'Boy'): и сообщить мне, что вы получаете на выходе? - person shruti1810; 24.05.2015
comment
вывод: `['2010, Ruby, 440, Girl\n] 2010 Girl ` - person RelientFX; 24.05.2015
comment
Кажется, в вашем файле только одна строка, и она тоже имеет пол Girl. И скрипт выведет только Boy года, указанного пользователем. Следовательно, нет выхода. - person shruti1810; 24.05.2015
comment
Нет ли какой-либо функции, которую вы могли бы добавить к исходному коду, чтобы заставить его работать? - person RelientFX; 24.05.2015
comment
Он работает и сейчас. Каковы ваши ожидания от кода? Настоящий код предназначен для вывода всех мальчиков года, введенных пользователем. - person shruti1810; 24.05.2015
comment
чтобы получить вывод: «Популярные имена мальчиков в (например) 2010 году: Эйдан 234, Боб 219, Стивен 673» и т. д. - person RelientFX; 24.05.2015
comment
да, именно так и делает. В вашем CSV-файле нет ни одного мальчика в этом году. Итак, как вы можете ожидать результат? - person shruti1810; 24.05.2015
comment
даже когда я пробую другой год, скажем, 2011, я получаю тот же результат - person RelientFX; 24.05.2015
comment
Не могли бы вы загрузить этот файл куда-нибудь и дать мне ссылку? - person shruti1810; 24.05.2015