我想将数据保存在文本文件中,并从这些文件创建字典,稍后将传递给函数。Python:需要帮助从文本文件创建字典并拆分列表
这里是我的代码:
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包含用空格隔开,它工作正常的键/值对的两列的样本文件。例如,
AB
CD
EF
产生像这样的列表:
OrderedDict([('a', 'b'), ('c', 'd'), ('e', 'f')])
,但如果我更改代码和.txt文件的内容,它打破了。例如,如果包括sample2.txt:
A:B
C:d
Ê: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文件而不是第二个?预先感谢您的帮助。
我真的建议的替代标记表明“......除了一次读取文件的一行。”让文件对象分割线,例如f'中的行将更具可读性。 – Leovt
感谢您的意见,@Leovt。 – user1186742
这工作完美!非常感谢你的解释和示例代码,马克。 – user1186742