text parsing - What's the best way(error proof / foolproof) to parse a file using python with following format? -


  ####################### ################# # कुछ टिप्पणी # अन्य टिप्पणी ########################### ############ ब्लॉक 1 {मान = डेटा some_value = कुछ अन्य प्रकार का डेटा अन्य मूल्य = 032423432} ब्लॉक 2 {मूल्य = डेटा some_value = कुछ अन्य प्रकार का डेटा अन्य मूल्य = 032423432}  < 

सबसे अच्छा तरीका मौजूदा स्वरूप जैसे कि JSON का उपयोग करना होगा।

यहाँ आपके प्रारूप के लिए एक उदाहरण पार्सर:

  lepl आयात (AnyBut, Digit, Drop, Eos, Integer, Letter, NON_GREEDY, Regexp, Space, Separator, Word) से # EBNF # name = (letter | "_"), {अक्षर | "_" | अंक } ; नाम = शब्द (पत्र () | '_', पत्र () | '_' | अंक ()) # शब्दों = शब्द, अंतरिक्ष +, शब्द, {अंतरिक्ष +, शब्द}; # दो या अधिक स्थान से अलग किए गए शब्दों (अंत में टिप्पणी की अनुमति देने के लिए गैर-लालची) शब्द = वर्ड () [2 :: गैर_ग्रेडि, ~ अंतरिक्ष () [1:]] & gt; सूची # मान = पूर्णांक | शब्द | शब्द; मान = (पूर्णांक () & gt; & gt; int) | शब्द () | शब्द # टिप्पणी = "#", {सभी वर्ण - "\ n"}, ("\ n" | EOF); टिप्पणी = '#' & amp; AnyBut ('\ n') [:] & amp; ('\ N' | Eos ()) से विभाजक के साथ (~ Regexp (r '\ s *')): # statement = name, "=", मान; बयान = नाम & amp; ड्रॉप ('=') & amp; मूल्य & gt; टपल # suite = "{", {टिप्पणी | बयान } , "}" ; सूट = ड्रॉप ('{') & amp; (~ टिप्पणी | बयान) [:] & amp; ड्रॉप ('}') & gt; Dict # block = name, सूट; ब्लॉक = नाम & amp; सुइट & gt; टपल # config = {टिप्पणी | ब्लॉक}; Config = (~ टिप्पणी | ब्लॉक) [:] & amp; ईओएस () & gt; प्रिंट ()))  

आउटपुट:

  [[ 'ब्लॉक 1': {'अन्य मूल्य': 32423432, 'some_value': ['कुछ', 'अन्य', 'प्रकार', 'का', 'डेटा'], 'मान': 'डेटा'}, 'ब्लॉक 2': {'अन्य मूल्य': 32423432, 'some_value': ['कुछ', 'अन्य', 'प्रकार', 'का', 'डेटा'], 'मूल्य': 'डेटा'}}]  

Comments