उन्नत पायथन विकास पाठ्यक्रम
अध्याय
>
स्तर
स्ट्रिंग और समय मॉड्यूल्स
स्ट्रिंग मॉड्यूल
उद्देश्य
स्ट्रिंग मॉड्यूल का उपयोग करके आवेदन डेटा इकट्ठा करें और प्रतिक्रिया पत्र भेजें।
अब जब कि नए फार्म निर्माण के लिए सामग्री का हिसाब-किताब हो चुका है, तो अब हमारे ध्यान नए कर्मचारियों की ओर मुड़ा है। हमारे पास नौकरी के आवेदन के लिए कई पत्र भेजने हैं, जो स्वाभाविक रूप से बहुत लेखन की आवश्यकता होगी, हालांकि हम स्ट्रिंग मॉड्यूल का उपयोग करके इसे पूरा कर सकते हैं, जिससे हमें टेम्पलेट बनाने और टेक्स्ट को फार्मेट करने में आसानी होगी ताकि टेक्स्ट की बॉडीज़ को संभालना सरल हो सके।
इस बार स्ट्रिंग मॉड्यूल को इम्पोर्ट करने का तरीका अन्य मॉड्यूल्स से थोड़ा अलग होगा क्योंकि हम उन क्लासों को इम्पोर्ट करेंगे जो मॉड्यूल का विस्तार करती हैं, और उन्हें निम्नलिखित तरीके से निष्पादित किया जाएगा:
import string from string import Template from string import Formatter
इससे हमें न केवल मॉड्यूल तक पहुंच मिलती है बल्कि टेम्पलेट और फार्मेटिंग क्लासेस तक भी पहुंच मिलती है जिनमें अपनी स्वयं की फंक्शन्स होती हैं। हमारे उद्देश्य के लिए, हम निम्नलिखित फंक्शन्स और क्लासेस का उपयोग करेंगे:
string.capwords(): यह फंक्शन स्ट्रिंग शब्दों को उचित कैपिटलाइज़ेशन में बदल देता है, जिससे शब्द का पहला अक्षर कैपिटलाइज़्ड हो जाता है और शेष छोटे अक्षरों में हो जाता है, भले ही स्ट्रिंग का फ़ॉर्मेटिंग कुछ भी हो।Template(): यह एक स्ट्रिंग क्लास है, इसका उपयोग टेम्पलेट ऑब्जेक्ट बनाने के लिए किया जाता है। इसमेंsubstitute()फंक्शन का उपयोग होता है, जो आपको एक स्ट्रिंग सेट अप करने और डेटा बदलने के लिए$साइन का उपयोग करके किसी स्थान को हाइलाइट करने की अनुमति देता है। इससे आप मॉड्यूलर स्ट्रिंग्स बना सकते हैं जिन्हें आप अपनी मर्जी से उपयोग कर सकें।Formatter(): यह एक स्ट्रिंग क्लास है, इसका उपयोग स्ट्रिंग को फार्मेट या कंपोज करने के लिए किया जाता है। यहTemplate()क्लास की तरह काम करता है लेकिन यह अधिक मजबूत है और बड़ी स्ट्रिंग सीक्वेंस के लिए बेहतर है। इसका उपयोगformat()फंक्शन के साथ किया जाता है जो आपको स्ट्रिंग सेट अप करने और{}का उपयोग करके स्ट्रिंग डेटा डालने की अनुमति देता है।
सबसे पहले, लाइट X मार्क की ओर जाएँ और फाइलिंग कैबिनेट की ओर मुख करके read() फंक्शन का उपयोग करें, इससे आपको विभिन्न आवेदकों के नाम के फोल्डर्स तक पहुंच मिलेगी। ये फोल्डर्स तीन (3) लिस्ट कॉन्स्टेंट्स के रूप में मौजूद हैं जिनके नाम हैं: folder_a, folder_b और folder_c।
हरित कालीन वाले डार्क X मार्क की ओर जाएँ और डेस्क की ओर मुख करें। तीन (3) लिस्ट बनाएं जिनके नाम हों: names_a, names_b, और names_c। उचित कैपिटलाइज़ेशन के लिए string.capwords() फंक्शन के साथ लिस्ट कम्प्रिहेंशन का उपयोग करें। उन कॉन्स्टेंट्स की लिस्टों को उनके संबंधित अक्षरों के साथ पेयर करें, उदाहरण के लिए names_a के लिए folder_a का उपयोग करें, इस प्रकार: names_a = [string.capwords(x) for x in folder_a]। इसी सूत्र का उपयोग names_b और names_c को populate करने के लिए करें।
all_names नाम की एक लिस्ट बनाएं और तीन (3) नामों की लिस्टों को इस प्रकार जोड़ें: all_names = names_a + names_b + names_c। इससे सभी लिस्टें एक बड़े लिस्ट में जुड़ जाएंगी, इसके बाद Python के join() फंक्शन का उपयोग करें जो सभी लिस्ट आइटम्स को एक स्ट्रिंग में जोड़ देगा। आप प्रत्येक लिस्ट आइटम के बीच में जो डालना है उसे उद्धरण चिह्नों में घोषित कर सकते हैं, इस प्रकार: all_names = ", ".join(all_templates)। प्री-लिखित write() फंक्शन का उपयोग all_names लिस्ट के साथ करें ताकि सही कैपिटलाइज़ेशन के साथ सभी नाम दर्ज किए जा सकें।
इसके बाद, गोल्ड X मार्क की ओर जाएँ और डेस्क की ओर मुख करें, यहाँ हम टेम्पलेट सेट अप करेंगे। यहाँ हमारे पास दो प्री-लिखित टेम्पलेट ऑब्जेक्ट्स हैं जिनके नाम हैं red_templates और blue_templates:
red_template = Template( "Hello, $name , thank you for applying for this position.") blue_template = Template( "Esteemed , $name , your application has been approved.")
इन टेम्पलेट्स में से प्रत्येक का एक अनूठा संदेश है, लेकिन इनमें एक साझा बातें है जो कि एक placeholder $name है। $ प्रतीक का उपयोग उस स्थान को दर्शाने के लिए किया जाता है जिसे चुनी हुई स्ट्रिंग से बदला जा सकता है, इस मामले में जैसा कि शीर्षक से पता चलता है यह एक नाम है। यदि कोई मान नहीं बदला जाता है तो टेम्पलेट स्ट्रिंग में ही placeholder का उपयोग करेगा।
इसे पूरा करने के लिए, एक लिस्ट बनाएं जिसका नाम all_templates हो।
चार (4) चक्रों के साथ एक for लूप बनाएं, इस लूप में हम तीन (3) नामों की लिस्ट में से नामों को टेम्पलेट्स के साथ स्थानान्तरित करेंगे, जिसमें नाम शामिल होंगे। उदाहरण के लिए, हम names_a लिस्ट में red_template लागू करेंगे। Template() क्लास के substitute() फंक्शन का उपयोग करके टेम्पलेट में $name placeholder को लिस्ट के नामों के साथ बदलें।
for x in range(4): names_a[x] = red_template.substitute(name=names_a[x])
उसी प्रकार names_b और names_c के साथ भी करें, names_b के लिए red_template का उपयोग करें और names_c के लिए blue_template का उपयोग करें।
एक बार जब सभी नामों की लिस्ट नए टेम्पलेट्स के साथ भर जाएं, तो इनकी समीक्षा करने का समय है। एक नई लिस्ट बनाएं जिसका नाम all_templates हो और सभी नामों की लिस्टों को निम्न प्रकार जोड़ें: all_templates = names_a + names_b + names_c। पहले की तरह ही join() फंक्शन का उपयोग करके सभी टेम्पलेटेड नामों को पठनीय रूप में संकलित करें, इस प्रकार: all_templates = "\n".join(all_templates)। प्री-लिखित write() फंक्शन का उपयोग all_templates के साथ करें ताकि विभिन्न नामों के लिए सभी हैडर्स को आउटलाइन किया जा सके।
अगले चरण में, रेड कालीन वाले डार्क X मार्क की ओर जाएँ और डेस्क की ओर मुख करें, यहाँ हम पहले सेट के पत्रों को फार्मेट और लिखेंगे। सबसे पहले दो (2) फार्मेटर ऑब्जेक्ट्स बनाएं जिनके नाम हों red_1 और red_2 क्लास डिनॉटे होते हुए, इस प्रकार: red_1 = Formatter(), red_2 = Formatter()। पत्रों के कंपोजीशन के लिए, red_letters नाम की एक लिस्ट बनाएं।
पहले की तरह हम चार (4) चक्रों के साथ एक for लूप तैयार करेंगे, इसमें दो सेट के प्री-लिखित स्ट्रिंग्स होंगी जिन्हें format() फंक्शन का उपयोग करके फार्मेट किया जाएगा और नाम वाले वेरिएबल्स को जोड़ा जाएगा। ये फार्मेटेड स्ट्रिंग्स red_letters लिस्ट में appended की जाएंगी, जिससे कि भेजे जाने वाले पत्रों की एक व्यापक लिस्ट बन सके। उदाहरण के लिए, red_1 फार्मेट ऑब्जेक्ट्स को names_a लिस्ट के साथ फार्मेट किया जाएगा और red_letters लिस्ट में appended किया जाएगा।
for x in range(4): red_letters.append(red_1.format( "{} Orientation will begin next week, please report to the office..." , names_a[x]))
उसी प्रकार red_2 फार्मेट ऑब्जेक्ट के साथ भी करें, इसके प्री-लिखित स्ट्रिंग का उपयोग करें और लूप में names_b जोड़ें। एक बार यह सब सेट हो जाए, तो join() फंक्शन का उपयोग करें red_letters के साथ ताकि डेटा को एक ही फाइल में संकलित किया जा सके, इस प्रकार: red_letters = "\n".join(red_letters)। प्री-लिखित write() फंक्शन का उपयोग करें red_letters के साथ ताकि भेजे जाने वाले सभी फार्मेट किए गए पत्रों को दर्ज किया जा सके।
अंत में, ब्लू कालीन वाले डार्क X मार्क की ओर जाएँ और डेस्क की ओर मुख करें, यहाँ हम अंतिम सेट के पत्रों को फार्मेट और कंपोज करेंगे, पहले की तरह दो (2) फार्मेटर ऑब्जेक्ट्स बनाएं जिनके नाम हों blue_1 और blue_2 क्लास डिनॉटे होते हुए, इस प्रकार: blue_1 = Formatter(), blue_2 = Formatter()। एक blue_letters नाम की लिस्ट बनाएं ताकि सभी पत्रों को फार्मेट और कंपोज किया जा सके।
फिर से चार (4) चक्रों के साथ एक for लूप बनाएं और प्री-लिखित स्ट्रिंग्स का उपयोग करके नामों की लिस्ट को फार्मेट करें और उन्हें blue_letters लिस्ट में appended करें format() फंक्शन का उपयोग करते हुए। इस मामले में, blue_1 फार्मेट ऑब्जेक्ट्स को names_c लिस्ट के साथ पेयर करें और blue_2 फार्मेट ऑब्जेक्ट्स को names_b लिस्ट के साथ। यह सब रेड कालीन के समान ही किया जाता है, लेकिन विभिन्न मानों का उपयोग करते हुए, जो कि फार्मेट्स और टेम्पलेट्स के उपयोग की बहुमुखी प्रतिभा को दर्शाते हैं। एक बार जब सब हो जाए, प्री-लिखित write() फंक्शन का उपयोग करें blue_letters के साथ ताकि अंतिम पत्रों को फाइल किया जा सके और स्तर पूरी हो सके।