Ho un file che contiene righe in questo tipo di formato.divide una riga in un dizionario con più livelli di coppie di valori chiave
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 };"
Prima ho diviso la riga con ":" che mi fornisce una lista con 2 voci. Mi piacerebbe dividere questa linea in un dizionario con una chiave e un valore, ma dove la chiave dello spartito ha più sottochiavi con un valore.
Hole 1
Par 4
Index 2
Distance 459
Score
Player1 4
Player2 6
Player3 4
Così sto usando qualcosa di simile ...
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))
Tuttavia ottengo un errore sull'elemento score
della linea:
ValueError: too many values to unpack (expected 2)
posso regolare la spaccatura su '=' a questo, quindi si ferma dopo il primo '='
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))
Tuttavia, perdo i valori secondari all'interno delle parentesi graffe. Qualcuno sa come posso ottenere questo dizionario multistrato?
'split_line_by_semicolon.split (';')' non sembra giusto per me. 'split_line_by_semicolon' è una lista, e gli elenchi non hanno un metodo' split'. Sei sicuro che questo sia esattamente il codice che stai utilizzando? – Kevin
corretto. Ci sono altre cose nella riga che analizzo per arrivare alla carne. Quindi è in realtà split_line_by_semicolon [3] – John