"विहित "आपके स्निपेट का पायथन अनुवाद ...:
import re
myre = re.compile(r'(.*?):([^-]*)-(.*)')
for line in lines:
mo = myre.search(line)
field_1, field_2, field_3 = mo.groups()
आयात करनाएक जरूरी है (आयात सामान्य रूप से मॉड्यूल के शीर्ष पर किया जाता है, लेकिन यह अनिवार्य नहीं है)। आरई प्रीकंपलिंग वैकल्पिक है (यदि आप re.search
फ़ंक्शन का उपयोग करते हैं, तो यह आपके पैटर्न को मक्खी पर संकलित करेगा) लेकिन अनुशंसित (इसलिए आप अपने प्रदर्शन के लिए संकलित आरई ऑब्जेक्ट्स के मॉड्यूल कैश पर भरोसा नहीं करते हैं, और इसके लिए भी एक आरई ऑब्जेक्ट और इसकी विधियों को कॉल करें, जो पायथन में अधिक आम है)।
आप या तो match
विधि का उपयोग कर सकते हैं (जो हमेशा प्रारंभ से मिलान करने का प्रयास करता है, चाहे आपका पैटर्न '^'
से शुरू हो या नहीं) या search
विधि (जो कहीं भी मिलान करने का प्रयास करता है); आपके दिए गए पैटर्न के साथ वे बराबर होना चाहिए (लेकिन मुझे 100% निश्चित नहीं है)।
.groups()
विधि सभी मिलान करने वाले समूहों को वापस लाती है ताकि आप उन्हें सभी को एक गलप में असाइन कर सकें (पर्ल में एक सरणी का उपयोग करने की तरह, पाइथन में एक सूची का उपयोग करके, शायद अधिक सामान्य होगा, लेकिन चूंकि आपने पर्ल में स्केलर्स का उपयोग करना चुना है आप पाइथन में बराबर भी कर सकते हैं)।
यदि कोई पंक्ति आरई से मेल नहीं खाती है तो यह अपवाद के साथ असफल हो जाएगा, जो ठीक है अगर आपको पता है कि वे सभी मेल खाते हैं (मुझे यकीन नहीं है कि आपके पर्ल का व्यवहार क्या है लेकिन मुझे लगता है कि यह "पुन: उपयोग" करेगा इसके बजाय पिछले मिलान लाइन के मूल्य, जो अनोखा है ... जब तक, आप फिर से सभी पंक्तियों को नहीं जानते ;-)। तुम सिर्फ मेल नहीं खाने वाले लाइनों को छोड़ चाहते हैं, के लिए निम्न दो पिछले बयान बदलने के लिए:
if mo:
field_1, field_2, field_3 = mo.groups()
स्रोत
2010-04-14 14:21:32
मुझे लगता है कि आप पर्ल के साथ अजगर भ्रमित कर रहे हैं; बस 'आयात करें' पढ़ें (यानी, पायथन के जेन, या सिर्फ 'पायथन-सी "इसे आयात करें" | grep -i there') –
@AleksiTorhamo शायद आप एक मजाक के साथ गंभीरता को भ्रमित कर रहे हैं? ;) – FMc
आह, अच्छा :-) यह सिर्फ इतना है कि यह एक दिन में दूसरी बार था कि मैंने किसी को यह कहकर उछाल दिया, इसलिए मैंने सोचा कि मैं बेवकूफ/सूचनात्मक पक्ष पर बेहतर गलती करूंगा :) (और हाँ, मैं ' मुझे यकीन है कि * अन्य * लड़का गंभीर था: डी) –