मेरे पास एक फ़ाइल है जिसमें इस प्रकार के प्रारूप में रेखाएं हैं।कुंजी मान जोड़े के एकाधिक परतों के साथ एक शब्दकोश में एक पंक्ति को विभाजित करें
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
तो मैं कुछ इस तरह उपयोग कर रहा हूँ ...
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))
हालांकि मैं रेखा के score
तत्व पर कोई त्रुटि मिलती है:
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' एक सूची है, और सूचियों में 'स्प्लिट' विधि नहीं है। क्या आप वाकई कोड चला रहे हैं? – Kevin
सही। उस रेखा में कुछ अन्य चीजें हैं जो मैं इसके मांस तक पहुंचने के लिए बाहर निकलती हूं। तो यह वास्तव में split_line_by_semicolon [3] – John