Я хочу сохранить данные в текстовых файлах и создать из этих файлов словари, которые я позже передам функции.
Вот мой код:
def lesson_dictionary(filename):
print "Reading file ", filename
with open(filename) as f:
mylist = f.read().strip().split()
dictionary = OrderedDict(zip(mylist[::2], mylist[1::2])) #keep keys/values in same order as declared in mylist
print dictionary
return dictionary
С образцом файла с именем sample.txt, содержащим два столбца пар ключ/значение, разделенных пробелом, все работает нормально. Например,
a b
c d
e f
дает такой список:
OrderedDict([('a', 'b'), ('c', 'd'), ('e', 'f')])
НО, если я изменю код и содержимое файла .txt, он сломается. Например, если в файле sample2.txt есть:
a:b
c:d
e:f
и мой код
def lesson_dictionary(filename):
print "Reading file ", filename
with open(filename) as f:
mylist = f.read().strip().split(':') #CHANGED: split string at colon!
dictionary = OrderedDict(zip(mylist[::2], mylist[1::2]))
print dictionary
return dictionary
, я получаю следующий вывод:
OrderedDict([('a', 'b \nc'), ('d\ne', 'f')])
Что происходит? Почему strip() работал для первого файла .txt, но не для второго? Заранее благодарю за любую помощь.