2013-04-29 2 views
1

У меня есть файл данных, который содержит то, что должно стать ключами и записями в словаре. Я буду читать и писать записи и читать ключи. Я нашел похожие вещи, объясненные в другом месте в stackoverflow, но для жизни моего не могу понять. любая помощь более чем приветствуется!необходимо прочитать из txt-файла в словаре

engine oil/filter : 6000 
transmission fluid : 48000 
timing belt : 96000 
other belts : 96000 
brake fluid : 48000 
air filter : 48000 
spark plugs : 96000 
rear differential : 48000 

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

service_intervals = {'engine oil/filter' : 6000 , 'transmission fluid' : 48000 , 'timing belt' : 96000 , 
       'other belts' : 96000 , 'brake fluid' : 48000 , 'air filter' : 48000 , 
       'spark plugs' : 96000 , 'rear differential' : 48000} 

какой алгоритм или функции может я использовать, чтобы сделать это случилось?

EDIT: from sleuthing говорит мне, что что-то общее с ast.literal_eval может быть лучшим решением, но мне трудно понять его.

ответ

5

Не требуется ast.literal_eval. Просто читать построчно, split на :, strip, разобрать целые числа, и поместить значения в словарь:

my_dict = {} 
with open('some file.txt', 'r') as f: 
    for line in f: 
     key, value = line.split(':') 
     my_dict[key.strip()] = int(value) 
+0

нормально, так просто, чтобы убедиться, что я на самом деле понять, в отличие от копирования, line.split будет читать строка за строкой, в то время как ключ, значение говорит, что ключ приходит первым в строке, то значение после «:»? если так, то общий смысл. Огромное спасибо!! – gaircity

+0

@gaircity: 'split' не читается по очереди; строка 'for line in f' читается по строкам. Для каждой строки 'split' разделит ее на часть перед': 'и частью после': '. Затем этот результат распаковывается в переменные 'key' и' value'. – icktoofay

+0

split (':') разделяет строку на список n полей для n-1 двоеточий. Возможно, лучше использовать line.partition (':'). «для строки в f» на самом деле является частью, которая читается по строкам. – dstromberg

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