2014-11-22 6 views
0

Я читаю и распечатываю текст из файла .CSV. Я изо всех сил пытаюсь заставить его работать. Любая помощь будет большой.Неверный вывод Python без использования модуля csv и defaultdict

def readWordFile(fileName): 
    for line in fileName: 
     text = line.split(', ') 
     word = text[0] 
     newYearCount = createYearCount(int(text[1]), int(text[2])) 
     result = {} 
     if line not in result: 
      result[word] = [newYearCount] 
     else: 
      result[word].append(newYearCount) 
     print(result) 

def main(): 
    fileName = input('Enter filename: ') 
    readWordFile(open(fileName)) 

main() 

я должен читать в CSV-файл, который представляет собой слово, год и вхождения этого слова в том же году:

airport, 2007, 175702 
airport, 2008, 173294 
request, 2005, 646179 
request, 2006, 677820 
request, 2007, 697645 
request, 2008, 795265 
wandered, 2005, 83769 
wandered, 2006, 87688 
wandered, 2007, 108634 
wandered, 2008, 171015 

Моя текущая выходная функция readWordFile выглядит как:

{'airport': [YearCount(year=2007, count=175702)]} 
{'airport': [YearCount(year=2008, count=173294)]} 
{'request': [YearCount(year=2005, count=646179)]} 
{'request': [YearCount(year=2006, count=677820)]} 
{'request': [YearCount(year=2007, count=697645)]} 
{'request': [YearCount(year=2008, count=795265)]} 
{'wandered': [YearCount(year=2005, count=83769)]} 
{'wandered': [YearCount(year=2006, count=87688)]} 
{'wandered': [YearCount(year=2007, count=108634)]} 
{'wandered': [YearCount(year=2008, count=171015)]} 

То, что я пытаюсь сделать, это попытаться напечатать правильный результат, посмотрите ниже.

{ 
    ’airport’: [ 
     YearCount(year=2007, count=175702), 
     YearCount(year=2008, count=173294) 
    ], 
    ’wandered’: [ 
     YearCount(year=2005, count=83769), 
     YearCount(year=2006, count=87688), 
     YearCount(year=2007, count=108634), 
     YearCount(year=2008, count=171015) 
    ], 
    ’request’: [ 
     YearCount(year=2005, count=646179), 
     YearCount(year=2006, count=677820), 
     YearCount(year=2007, count=697645), 
     YearCount(year=2008, count=795265) 
    ] 
} 

Спасибо.

+0

Вы должны использовать стандартный модуль [csv] (https://docs.python.org/2/library/csv.html) и defaultdict. –

+0

Если у вас есть новый вопрос, спросите [* новый вопрос *] (http://stackoverflow.com/questions/ask) (или еще лучше, найдите ответ, потому что я уверен, что на него был дан ответ раньше). Не редактируйте этот вопрос, чтобы стать новым - это просто делает существующий ответ недействительным для нового вопроса, и все это становится запутанным и бесполезным для будущих посетителей. –

ответ

2
import csv 
from collections import defaultdict 

result = defaultdict(list) 

csv_reader = csv.reader(fileName) 

for row in csv_reader: 
    result[row[0]].append(createYearCount(int(row[1]), int(row[2])) 

print result 
+0

это работает, однако, я получаю эту вещь в начале вывода. 'defaultdict (,' Пожалуйста, посмотрите на OP для обновления. – user3385538

+0

Я не вижу ничего нового в вашем OP. –

+0

@ user3385538 Если вы хотите, чтобы простой файл распечатывался в конце, вы можете сделать 'print (dict (result))'. Но было бы лучше просто форматировать вывод самостоятельно, потому что форматирование обычно должно храниться отдельно от изменения фактического содержимого. –

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