データをテキスト ファイルに保存し、それらのファイルから辞書を作成して、後で関数に渡したいと考えています。
これが私のコードです:
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
スペースで区切られたキーと値のペアの 2 つの列を含む sample.txt という名前のサンプル ファイルを使用すると、問題なく動作します。例えば、
ab
CD
エフ
次のようなリストが得られます。
OrderedDict([('a', 'b'), ('c', 'd'), ('e', 'f')])
しかし、コードと .txt ファイルの内容を変更すると、壊れます。たとえば、sample2.txt に次のものが含まれているとします。
a:b
CD
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 ファイルでは機能するのに、2 番目のファイルでは機能しないのはなぜですか? 助けてくれてありがとう。