के साथ गैर लालची पार्सिंग मैं पाइपर्सिंग के साथ एक रेखा को पार्स करने की कोशिश कर रहा हूं। यह रेखा कई (कुंजी, मान) से बना है। मैं क्या प्राप्त करना चाहता हूं (कुंजी, मान) की एक सूची है। एक साधारण उदाहरण: [('ids', '12'), ('fields', 'name')]
पाइपर्सिंग
एक अधिक जटिल उदाहरण:
ids = 12 fields = name
की तरह कुछ में परिणाम चाहिए [('ids', '12, 13, 14'), ('fields', 'name, title')]
पुनश्च:: टपल अंदर
ids = 12, 13, 14 fields = name, title
की तरह कुछ में परिणाम चाहिए परिणामी सूची सिर्फ एक उदाहरण है। यह एक dict या एक और सूची हो सकता है या जो भी हो, यह महत्वपूर्ण नहीं है। [('ids', '12 fields')]
Pyparsing अगले मुख्य खा रहा है, यह भी मूल्य का हिस्सा है पर विचार:
लेकिन जो कुछ भी मैं कोशिश की है अब मैं जैसे परिणाम प्राप्त करने के।
import pyparsing as P
key = P.oneOf("ids fields")
equal = P.Literal('=')
key_equal = key + equal
val = ~key_equal + P.Word(P.alphanums+', ')
gr = P.Group(key_equal+val)
print gr.parseString("ids = 12 fields = name")
कोई मेरी मदद कर सकते:
यहाँ एक नमूना कोड है? धन्यवाद।
पीएस: आपकी पोस्ट को थोड़ा संपादित किया गया। मुझे आपके समाधान के साथ बेहतर परिणाम मिलता है। समस्या यह है कि मुझे केवल पहला भाग मिलता है, न कि निम्नलिखित भागों में। मुझे मिलता है [('आईडी', '12, 13,14 ')]। मैं [('ids', '12, 13,14 ') प्राप्त करना चाहता हूं, (' फ़ील्ड ',' नाम, शीर्षक ')] – Oli
@ ओली: पकड़ के लिए धन्यवाद। मैंने आपकी दूसरी समस्या का समाधान जोड़ा। – blubb
बहुत बहुत धन्यवाद। वास्तव में मुझे क्या चाहिए। – Oli