Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पाइथन के साथ एकाधिक दस्तावेज़ प्रारूपों (सीएसवी, टेक्स्ट, एमएस वर्ड) में स्ट्रिंग के लिए स्कैन कैसे करें?

समस्या..

मान लें कि आपके पास किसी विशेष कीवर्ड को खोजने के लिए विभिन्न प्रारूपों वाली फाइलों से भरी एक निर्देशिका है।

तैयार हो रहा है..

नीचे पैकेज स्थापित करें।

1. सुंदरसूप4

2. अजगर-डॉक्क्स

इसे कैसे करें...

1. सीएसवी प्रारूप में एक स्ट्रिंग खोजने के लिए एक फ़ंक्शन लिखें। मैं फ़ाइल के माध्यम से जाने और स्ट्रिंग की खोज करने के लिए csv.reader मॉड्यूल का उपयोग करूंगा और जब अन्य गलत पाया जाएगा तो सही होगा।

उदाहरण

def csv_stringsearch(input_file, input_string):"""फ़ंक्शन:csv files.args में एक स्ट्रिंग खोजें:इनपुट फ़ाइल, इनपुट स्ट्रिंग"""फ़ाइल के रूप में ओपन (input_file) के साथ:csv.reader(file) में पंक्ति के लिए :पंक्ति में कॉलम के लिए:यदि कॉलम में input_string.lower():रिटर्न ट्रूरिटर्न गलत

2. एक पाठ फ़ाइल खोजने के लिए कार्य। यह थोड़ा मुश्किल है क्योंकि हमें एन्कोडिंग से निपटने की आवश्यकता है। हजारों एन्कोडिंग हैं और एन्कोडिंग प्रारूप का निर्धारण करना सबसे कठिन हिस्सा है। ऑफकोर्स, हम उस उपयोगकर्ता के पास वापस जा सकते हैं जिसने टेक्स्ट फ़ाइल बनाई है लेकिन हे हम इसे सही तरीके से स्वचालित कर रहे हैं।

इसलिए, हम एन्कोडिंग निर्धारित करने के लिए यूनिकोडडैमिट का उपयोग करेंगे।

उदाहरण

def text_stringsearch(input_file, input_string):"""फंक्शन:टेक्स्ट फाइलों में एक स्ट्रिंग खोजें। (1024)गेसेंकोडिंग =यूनिकोडडैमिट (कंटेंट) एन्कोडिंग =गेसेन्कोडिंग। ओरिजिनल_एन्कोडिंग# ओपन और रीड विथ ओपन (इनपुट_फाइल, एन्कोडिंग =एन्कोडिंग) फाइल के रूप में:फाइल में लाइन के लिए:अगर लाइन में इनपुट_स्ट्रिंग। लोअर ():रिटर्न ट्रूरिटर्न फाल्स

3. MS Word दस्तावेज़ में स्ट्रिंग खोजने का कार्य।

उदाहरण

def MSDocx_stringsearch(input_file, input_string):"""फ़ंक्शन:MS Word दस्तावेज़ों में स्ट्रिंग खोजें। इनपुट_स्ट्रिंग पैराग्राफ में 

4.अब, हमें फाइलों के माध्यम से लूप करने के लिए मुख्य कार्य करने की आवश्यकता है और खोज के लिए स्ट्रिंग के साथ संबंधित कार्यों को कॉल करें। यहां मुझे लगता है कि खोज के लिए कोड और इनपुट फाइलें एक ही निर्देशिका में हैं। यदि आपकी निर्देशिका किसी भिन्न स्थान पर है, तो आप पथ पैरामीटर में जोड़ सकते हैं।

उदाहरण

def main(input_string):"""Function:वर्तमान निर्देशिका खोलें और सभी फाइलों में एक स्ट्रिंग की खोज करें:os.walk ('।') में रूट, डीआईआर, फाइलों के लिए इनपुट स्ट्रिंग """:के लिए फ़ाइल में फ़ाइल:# फ़ाइल एक्सटेंशन प्राप्त करेंएक्सटेंशन =फ़ाइल.स्प्लिट ('।') [-1] यदि फ़ंक्शन_मैप्स में एक्सटेंशन है:search_file =function_maps.get (एक्सटेंशन) full_file_path =os.path.join (रूट, फ़ाइल) यदि search_file ( full_file_path, input_string):प्रिंट (f' *** हाँ स्ट्रिंग {full_file_path}' में मिली)

5. हमारे कार्यों को एक शब्दकोश बनाकर फ़ाइल एक्सटेंशन में मैप करें।

उदाहरण

EXTENSIONS ={'csv':csv_stringsearch,'txt':text_stringsearch,'docx':MSDocx_stringsearch,}

उदाहरण

6. यह सब एक साथ रखना।

आयात करें csv.reader(file) में:पंक्ति में कॉलम के लिए:यदि कॉलम में input_string.lower():return Truereturn Falsedef MSDocx_stringsearch(input_file, input_string):"""फ़ंक्शन:MS Word दस्तावेज़ों में एक स्ट्रिंग खोजें। args:इनपुट फ़ाइल, इनपुट स्ट्रिंग"""doc =docx.Document(input_file) for पैराग्राफ in doc.paragraphs:if input_string inpara.text.lower():return Truereturn Falsedef text_stringsearch(input_file, input_string):"""Function:में एक स्ट्रिंग खोजें text files.args:इनपुट फ़ाइल, इनपुट स्ट्रिंग """ ओपन (इनपुट_फाइल, 'आरबी') के साथ फाइल के रूप में:सामग्री =फ़ाइल। पढ़ें (1024) अनुमान लगाना =यूनिकोडडैमिट (सामग्री) एन्कोडिंग =गेसेन्कोडिंग। ओरिजिनल_एन्कोडिंग # ओपन और रीड विथ ओपन ( input_file, एन्कोडिंग =एन्कोडिंग) फ़ाइल के रूप में:फ़ाइल में लाइन के लिए:यदि input_string लाइन में। निचला ():रिटर्न ट्रूरिटर्न गलत है ef main(input_string):"""Function:वर्तमान निर्देशिका खोलें और सभी फाइलों में एक स्ट्रिंग की खोज करें:इनपुट स्ट्रिंग"""रूट, डीआईआर, फाइलों के लिए os.walk('.'):फाइलों में फाइल के लिए :# फ़ाइल एक्सटेंशन प्राप्त करेंएक्सटेंशन =फ़ाइल। स्प्लिट ('।') [-1] यदि फ़ंक्शन_मैपिंग में एक्सटेंशन है:search_file =function_mapping.get (एक्सटेंशन) full_file_path =os.path.join (रूट, फ़ाइल) यदि search_file (full_file_path, input_string) ):प्रिंट (f' *** हाँ स्ट्रिंग {full_file_path}' में मिली) function_mapping ={'csv':csv_stringsearch, 'txt':text_stringsearch, 'docx':MSDocx_stringsearch,}if __name__ =='__main__':string_to_search ='हैलो' प्रिंट (f'आउटपुट \ n') मुख्य (string_to_search.lower ())

आउटपुट

*** हाँ स्ट्रिंग .\Hello_World.docx में मिली** हाँ स्ट्रिंग .\My_Amazing_WordDoc.docx में मिली है

7.यदि आप प्रोग्राम को कमांड लाइन निष्पादन में बदलना चाहते हैं तो argparse का उपयोग करें।

उदाहरण

if __name__ =='__main__':parser =argparse.ArgumentParser()parser.add_argument('-s', type=str, help='Input string to search', default='Hello')args =parser. parse_args()मुख्य(args.s.lower())

  1. वर्ड डॉक्यूमेंट कैसे रिकवर करें

    आपने एक दस्तावेज़ लिखने में घंटों बिताए और फिर, अचानक, आपका पीसी क्रैश हो गया। हजारों शब्द, घंटों प्रयास:एक पल में चला गया। दुर्भाग्य से, यह एक पूरी तरह से संभव परिदृश्य है जो कभी-कभी तब हो सकता है जब आप Microsoft Word दस्तावेज़ लिख रहे हों या संपादित कर रहे हों, खासकर यदि आपने अपनी फ़ाइल सहेजी नहीं

  1. पायथन - एक CSV फ़ाइल में पांडा डेटाफ़्रेम कैसे लिखें?

    Python में CSV फ़ाइल में पांडा डेटाफ़्रेम लिखने के लिए, to_csv() . का उपयोग करें तरीका। सबसे पहले, हम सूचियों का एक शब्दकोश बनाते हैं - # dictionary of lists d = {'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],'Date_of_pur

  1. हम पायथन में कई सीमांकक के साथ एक स्ट्रिंग को कैसे तोड़ सकते हैं?

    हम re.split(delimiter, str) विधि का उपयोग करके कई सीमांकक के साथ एक स्ट्रिंग को तोड़ सकते हैं। यह सीमांकक और स्ट्रिंग का एक रेगेक्स लेता है जिसे हमें विभाजित करने की आवश्यकता होती है। उदाहरण के लिए: a='Beautiful, is; better*than\nugly' import re print(re.split('; |, |\*|\n',a)) हमें