2014-12-11 2 views
1

Мне нужно создать словарь из файла, который мне был дан. Файл, названный student_data.txt гласит:Создание словаря из заданного текстового файла (python)

Joy - 100 
Rita - 90 
John - 80 
Sheena - 100 
Smith - 100 
Karl - 90 
Andrew - 100 
Klara - 100 
Sarah - 90 
Amy - 80 
Sandy - 100 

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

Вот что я пробовал:

myDictionary = {} 
myFile = open("student_data.txt", 'r') 
for line in myFile: 
    key, value = line.strip().split('-') 
    myDictionary[key.strip()] = value.strip() 

Когда я компиляции и запуска этого я получаю сообщение об ошибке сказав «ValueError: Потребности более чем на 1 значение для распаковки.»

ответ

0

Я думаю, что проблема - это пустая строка в вашем файле. Попробуйте напечатать строку вы читали, прежде чем в split, чтобы получить подсказку:

myDictionary = {} 
myFile = open("a.txt", 'r') 
for line in myFile: 
    fields = line.strip().split('-') 
    if len(fields) == 2: 
     myDictionary[fields[0].strip()] = fields[1].strip() 
print(myDictionary) 

Фиксированный код для обработки пустой строки - мы проверяем, что мы захватили ровно 2 поля и обновлять только словарь, если это дело.

Другой подход заключается в проверке линии для содержания:

myDictionary = {} 
myFile = open("a.txt", 'r') 
for line in myFile: 
    if line.isspace(): 
     continue 
    key, value = line.strip().split('-') 
    myDictionary[key.strip()] = value.strip() 
print (myDictionary) 
+0

в порядке, поэтому, если у меня есть пустая строка, как мне ее исправить? – Folferz

+0

@Folferz, обновил код, чтобы добавить поддержку для пустых строк. – vikramls

0

Ваш код должен работать. Вы уверены, что в файле нет пустых строк?

Попробуйте это:

for line in myFile: 
    pair = line.split('-') 
    myDictionary[pair[0].strip()] = pair[1].strip() 

Если это не удается, вы знаете, что пустые строки в файле где-то, что вы должны учитывать.

+0

Я получил сообщение об ошибке сказав, что индекс список был вне диапазона. – Folferz

+0

Тогда у вас есть пустая строка где-то в вашем файле – RPGillespie

+0

Вы хоть представляете, как я исправлю эту проблему? – Folferz

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