2013-10-25 6 views
-1

У меня есть файл данных, который имеет 100 строк, и я хочу создать словарь, который пропускает первые две строки, а затем создает словарь с перечислением ключей с строками в качестве значений.Python: Пропуск строк из файла

myfile = open(infile, 'r') 
d={} 
with myfile as f: 
    next(f) 
    next(f) 
    for line in f: 

Это то, что я получил, я не знаю, как использовать iteritems(), перечисления(), или itervalues ​​(), но я чувствую, что я думаю, что я буду использовать их, или, может быть, нет, если кто-нибудь может мне помочь ,

+0

Благодарим за отправку кода, но, пожалуйста, введите в свой вопрос немного больше подробностей: какая у вас проблема, какой результат вы ожидаете, и [что вы пробовали] (http://whathaveyoutried.com), так что далеко? –

ответ

0

Это будет просто из головы, так что, безусловно, это место для улучшения.


myfile = open(infile, 'r') # open the file 
d = {}      # initiate the dict 

for line in myfile:  # iterate over lines in the file 
    counter = 0    # initiate the counter 
    if counter <= 1:   # if we have counted under 2 iterations 
    counter += 1   # increase the counter by 1 and do nothing else 
    else:     # if we have counted over 2 iterations 
    d[counter - 2] = line # make a new key with the name of lines counted (taking in to consideration the 2 lines precounted) 
    counter += 1   # increase the counter by 1 before continuing 

Я не могу из верхней части моей головы помню, где в коде, было бы лучше, чтобы закрыть файл, но сделать некоторые эксперименты и читать this и this. И в другой раз хорошее место для начала было бы действительно google и python docs в целом.

+1

Возможно, лучше использовать оператор 'with', а не явно закрывать файл - блок' with' будет заботиться о закрытии файла, даже если есть ошибка. – kojiro

1

Вы могли сделать что-то вроде:

from itertools import islice 
with open(infile, 'r') as myfile: 
    d = dict(enumerate(islice(myfile, 2, None))) 

Но я хотел, чтобы я понял, почему вы хотите, чтобы пропустить первые две строки - вы уверены, что вы не хотите linecache?

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