2015-11-12 3 views
0

Я пытаюсь прочитать файл, а затем сохранить его в словаре с годом в качестве ключа. Однако, когда я читаю файл, он пропускает кучу строк за раз. Файл содержит все победители мировой серии (1903-2014).Файл не читается правильно

fileName = input("Enter file name: ") 
try: 
    with open(fileName) as f: 
     for data in f: 
      data = f.readline().strip("\n") 
      print(data) ##used to test to make sure the data is being read 
except: 
    print("file doesnt exist") 

Выход после запуска:

1905,New York Giants 
1907,Chicago Cubs 
1909,Pittsburgh Pirates 
1911,Philadelphia Athletics 
1913,Philadelphia Athletics 
1915,Boston Red Sox 
1917,Chicago White Sox 
... 

Файл

1903,Boston Americans 
1905,New York Giants 
1906,Chicago White Sox 
1907,Chicago Cubs 
1908,Chicago Cubs 
1909,Pittsburgh Pirates 
+0

Вы можете разместить файл сниппет? Вы пропускаете каждую четную запись '(6,8 ...)', которая может означать, что у одной строки есть 2 записи. – letsc

+0

похоже, что вы читаете файл csv. почему бы просто не использовать модуль 'csv'? – styvane

ответ

5
for data in f: 

уже перебирает каждую линию, что означает:

data = f.readline().strip("\n") 

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

+0

Спасибо. Я знал, что это глупая ошибка. –

0
print dict(x.split(",") for x in open("filename.txt")) 

что все

0

Лучший способ сделать это с помощью модуля csv

import csv 

fileName = input("Enter file name: ") 

with open(fileName) as f: 
    reader = csv.reader(f) 
    print(dict(reader)) 
Смежные вопросы