私はフォーマットのこのタイプの行を含むファイルを持っているの複数の層で辞書に行を分割します。は、キーと値のペア
Example 1:
nextline = "DD:MM:YYYY INFO - 'WeeklyMedal: Hole = 1; Par = 4; Index = 2; Distance = 459; Score = { Player1 = 4 };"
Example 2:
nextline = "DD:MM:YYYY INFO - 'WeeklyMedal: Hole = 1; Par = 4; Index = 2; Distance = 459; Score = { Player1 = 4; Player2 = 6; Player3 = 4 };"
私は最初に行を ':'で分割し、2つのエントリを持つリストを表示します。 私は、キーと値を持つ辞書には、この行を分割したいのですが、スコアキーが値を持つ複数のサブキーを持っています。
Hole 1
Par 4
Index 2
Distance 459
Score
Player1 4
Player2 6
Player3 4
だから私は、私はラインのscore
要素にエラーが発生しますが、このような何か...
split_line_by_semicolon = nextline.split(":")
dictionary_of_line = dict((k.strip(), v.strip()) for k,v in (item.split('=')
for item in split_line_by_semicolon.split(';')))
for keys,values in dictionary_of_line.items():
print("{0} {1}".format(keys,values))
を使用しています:
ValueError: too many values to unpack (expected 2)
私は上の分割を調整することができます'=' これまで、それは最初の後に停止 '='
dictionary_of_line = dict((k.strip(), v.strip()) for k,v in (item.split('=',1)
for item in split_line_by_semicolon.split(';')))
for keys,values in dictionary_of_line.items():
print("{0} {1}".format(keys,values))
は、しかし、私は、中括弧内のサブ値を失います。誰も私がどのようにこの多層の辞書を達成することができるか知っていますか?
'split_line_by_semicolon.split(「;」)'右側に私には見えません。 'split_line_by_semicolon'はリストで、リストは' split'メソッドを持っていません。これはあなたが実行しているコードとまったく同じですか? – Kevin
正しい。私はそれの肉に得るために解析する行にいくつかの他のものがあります。だから、その実際には、[3] – John