সমস্যা..
ধরুন আপনার কাছে একটি নির্দিষ্ট কীওয়ার্ড অনুসন্ধান করার জন্য বিভিন্ন ফর্ম্যাট সহ ফাইলে পূর্ণ একটি ডিরেক্টরি রয়েছে৷
প্রস্তুত হচ্ছে..
নীচের প্যাকেজগুলি ইনস্টল করুন৷
৷1. সুন্দর স্যুপ4
2. python-docx
কিভাবে করবেন...
CSV ফরম্যাটে একটি স্ট্রিং অনুসন্ধান করতে একটি ফাংশন লিখুন। আমি csv.reader মডিউল ব্যবহার করে ফাইলটি দেখতে এবং স্ট্রিং অনুসন্ধান করব এবং অন্যথায় False পাওয়া গেলে True ফেরত দেব।
উদাহরণ
def csv_stringsearch(input_file, input_string):"""ফাংশন:csv files.args-এ একটি স্ট্রিং অনুসন্ধান করুন:ইনপুট ফাইল , ইনপুট স্ট্রিং""" ফাইল হিসেবে খোলা (input_file) সহ:csv.reader(ফাইল) এ সারিটির জন্য :সারির কলামের জন্য:যদি column.lower()-এ input_string:Return Truereturn False
2. একটি টেক্সট ফাইল অনুসন্ধান ফাংশন. এটি কিছুটা কঠিন কারণ আমাদের এনকোডিং মোকাবেলা করতে হবে। হাজার হাজার এনকোডিং রয়েছে এবং এনকোডিং বিন্যাস নির্ধারণ করা সম্ভবত সবচেয়ে কঠিন অংশ। অবশ্যই, আমরা সেই ব্যবহারকারীর কাছে ফিরে যেতে পারি যিনি টেক্সট ফাইলটি তৈরি করেছেন কিন্তু হেই আমরা এটি সঠিকভাবে স্বয়ংক্রিয় করছি৷
সুতরাং, আমরা এনকোডিং নির্ধারণ করতে ইউনিকোডড্যামিট ব্যবহার করব।
উদাহরণ
def text_stringsearch(input_file, input_string):"""ফাংশন:টেক্সট ফাইলে একটি স্ট্রিং খুঁজুন (1024)guessencoding =UnicodeDammit(content)এনকোডিং =guessencoding.original_encoding# ফাইল হিসাবে খুলুন এবং রিড সহ open(input_file, encoding=encoding) ফাইল হিসাবে:ফাইলের জন্য লাইন:if input_string in line.lower():রিটার্ন Truereturn False>3. একটি MS Word নথিতে একটি স্ট্রিং অনুসন্ধান করার ফাংশন৷
৷উদাহরণ
def MSDocx_stringsearch(input_file, input_string):"""ফাংশন:MS Word ডকুমেন্টে একটি স্ট্রিং অনুসন্ধান করুন input_string in paragraph.text.lower():রিটার্ন Truereturn False4.এখন, ফাইলগুলি লুপ করার জন্য আমাদের প্রধান ফাংশন থাকতে হবে এবং অনুসন্ধানের জন্য স্ট্রিং সহ সংশ্লিষ্ট ফাংশনগুলিকে কল করতে হবে৷ এখানে আমি অনুমান করছি অনুসন্ধান করার জন্য কোড এবং ইনপুট ফাইলগুলি একই ডিরেক্টরিতে রয়েছে৷ আপনি যদি ডাইরেক্টরি অন্য জায়গায় থাকে তাহলে আপনি পাথ প্যারামিটার যোগ করতে পারেন।
উদাহরণ
def main(input_string):"""ফাংশন:বর্তমান ডিরেক্টরি খুলুন এবং সমস্ত ফাইলসার্জে একটি স্ট্রিং অনুসন্ধান করুন:os.walk('.'):এর জন্য রুট, ডাইরস, ফাইলগুলির জন্য ইনপুট স্ট্রিং """ ফাইলে ফাইল:# ফাইল এক্সটেনশন এক্সটেনশন =file.split('.')[-1]যদি function_maps-এ এক্সটেনশন পান:search_file =function_maps.get(extension)full_file_path =os.path.join(root, file) if search_file( full_file_path, input_string):print(f' *** হ্যাঁ স্ট্রিং {full_file_path}' এ পাওয়া গেছে)5. একটি অভিধান তৈরি করে ফাইল এক্সটেনশনে আমাদের ফাংশন ম্যাপ করুন৷
৷উদাহরণ
EXTENSIONS ={'csv':csv_stringsearch,'txt':text_stringsearch,'docx':MSDocx_stringsearch,}উদাহরণ
6.এটি সব একসাথে রাখা।
ইম্পোর্ট করুন osimport argparseimport csvimport docxfrom bs4 import UnicodeDammitdef csv_stringsearch(input_file, input_string):"""ফাংশন:csv files.args-এ একটি স্ট্রিং অনুসন্ধান করুন:ইনপুট ফাইল , ইনপুট স্ট্রিং""""" ফাইলটি খোলার সাথে (input হিসাবে) csv.reader(file):সারি কলামের জন্য:যদি input_string in column.lower():Return Truereturn Falsedef MSDocx_stringsearch(input_file, input_string):"""ফাংশন:MS Word documents.args এ একটি স্ট্রিং অনুসন্ধান করুন:ইনপুট ফাইল , ইনপুট স্ট্রিং"""doc =docx.Document(input_file):doc.paragraphs-এ অনুচ্ছেদের জন্য:যদি input_string in paragraph.text.lower():Return Truereturn Falsedef text_stringsearch(input_file, input_string):"""ফাংশন:একটি স্ট্রিং অনুসন্ধান করুন text files.args:ইনপুট ফাইল , ইনপুট স্ট্রিং """ খোলার সাথে (input_file, 'rb') ফাইল হিসাবে:content =file.read(1024)guessencoding =UnicodeDammit(content)encoding =guessencoding.original_encoding# খুলুন এবং খোলার সাথে রিড করুন( ইনপুট_ফাইল, এনকোডিং=এনকোডিং) ফাইল হিসাবে:ফাইলে লাইনের জন্য:লাইনে ইনপুট_স্ট্রিং থাকলে. নিম্ন():রিটার্ন ট্রুরিটার্ন মিথ্যা ef main(input_string):"""ফাংশন:বর্তমান ডিরেক্টরি খুলুন এবং সমস্ত ফাইলসার্গে একটি স্ট্রিং অনুসন্ধান করুন:os.walk('.'):ফাইলে ফাইলের জন্য রুট, ডির, ফাইলের জন্য ইনপুট স্ট্রিং""" :# ফাইল এক্সটেনশন এক্সটেনশন =file.split('.')[-1] যদি function_mapping এ এক্সটেনশন পান:search_file =function_mapping.get(extension)full_file_path =os.path.join(root, file) if search_file(full_file_path, input_string) ):print(f' *** হ্যাঁ স্ট্রিং পাওয়া গেছে {full_file_path}')function_mapping ={'csv':csv_stringsearch,'txt':text_stringsearch,'docx':MSDocx_stringsearch,}যদি __name__ =='__main__':string_to_search 'Hello'print(f'Output \n')main(string_to_search.lower())আউটপুট
*** হ্যাঁ স্ট্রিং পাওয়া গেছে .\Hello_World.docx**** হ্যাঁ স্ট্রিং পাওয়া গেছে .\My_Amazing_WordDoc.docx7. যদি আপনি প্রোগ্রামটি কমান্ড লাইন এক্সিকিউশনে পরিবর্তন করতে চান তাহলে argparse ব্যবহার করুন।
উদাহরণ
if __name__ =='__main__':parser =argparse.ArgumentParser()parser.add_argument('-s', type=str, help='input string to search', default='Hello')args =পার্সার। parse_args()main(args.s.lower())