কম্পিউটার

পাইথনে লগ ফাইলগুলিতে ডেটা পুনরায় সাজান


ধরুন আমাদের লগের একটি অ্যারে আছে। সেই অ্যারেতে প্রতিটি এন্ট্রি শব্দের একটি স্পেস সীমাবদ্ধ স্ট্রিং। প্রতিটি লগের প্রথম শব্দটি একটি আলফানিউমেরিক শনাক্তকারী। তারপর, নিচের মত বিভিন্ন ধরনের স্ট্রিং আছে −

  1. আইডির পরের প্রতিটি শব্দে শুধুমাত্র ছোট হাতের অক্ষর থাকবে;
  2. আইডির পরের প্রতিটি শব্দে শুধুমাত্র সংখ্যা থাকবে।

এই দুই ধরনের লগকে আমরা যথাক্রমে লেটার-লগ এবং ডিজিট-লগ বলব। এবং ti নিশ্চিত যে প্রতিটি লগের আইডির পরে অন্তত একটি শব্দ আছে৷

আমাদের লগগুলিকে পুনর্বিন্যাস করতে হবে যাতে সমস্ত অক্ষর-লগগুলি কোনও অঙ্ক-লগের আগে থাকে। এবং অক্ষর-লগগুলিকে অভিধানিকভাবে শনাক্তকারীকে উপেক্ষা করে আদেশ করা হয়, বন্ধনের ক্ষেত্রে ব্যবহৃত সনাক্তকারীর সাথে। অবশেষে, অঙ্ক-লগগুলিকে তাদের আসল ক্রমে রাখতে হবে। তাই আমাদের লগের চূড়ান্ত ক্রম ফেরত দিতে হবে।

সুতরাং, যদি ইনপুটটি লগের মত হয় =["dig1 9 2 5 2","let1 art can","dig2 4 8","let2 own kit dig","let3 art zero"], তাহলে আউটপুট হবে [ "লেট1 আর্ট ক্যান","লেট3 আর্ট জিরো","লেট2 নিজস্ব কিট ডিগ","ডিগ১ 9 2 52","ডিগ2 4 8"]

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • শব্দ :=একটি নতুন তালিকা
  • সংখ্যা :=একটি নতুন তালিকা
  • প্রতিটি লগ ইনের জন্য, করুন
    • s :=লগের শব্দের তালিকা
    • যদি দ্বিতীয় শব্দটি একটি সংখ্যা হয়, তাহলে
      • সংখ্যার শেষে লগ ঢোকান
    • অন্যথায়,
      • স্পেস দিয়ে আলাদা করে s-এর প্রতিটি উপাদান যোগ করুন এবং শেষে শব্দের অ্যারেতে সন্নিবেশ করুন
    • শব্দ =তারপর শব্দের অ্যারেকে অভিধানিকভাবে সাজান
  • শব্দ :=স্পেস দিয়ে আলাদা করে শব্দ অ্যারের প্রতিটি উপাদানে যোগ দিন এবং স্ট্রিংগুলির একটি তালিকা তৈরি করুন
  • দুটি তালিকার শব্দ এবং সংখ্যা একত্রিত করুন, তারপরে ফিরে আসুন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class Solution:
   def reorderLogFiles(self, logs):
      words = []
      nums = []
      for log in logs:
         s = log.split()
         if s[1].isdigit():
            nums.append(log)
         else:
            words.append((s[0], ' '.join(s[1:])))
            words = sorted(words, key=lambda x: (x[1],x[0]))
            words = [' '.join(w) for w in words]
      return words + nums
ob = Solution()
print(ob.reorderLogFiles(["dig1 9 2 5 2","let1 art can","dig2 4
8","let2 own kit dig","let3 art zero"]))

ইনপুট

["dig1 9 2 5 2","let1 art can","dig2 4 8","let2 own kit dig","let3 art zero"]

আউটপুট

['let1 art can', 'let3 art zero', 'let2 own kit dig', 'dig1 9 2 5 2', 'dig24 8']

  1. পাইথনে পরিসংখ্যানগত চিন্তাভাবনা

  2. পাইথনে সেন্সাস ডেটা বিশ্লেষণ করা হচ্ছে

  3. একাধিক পাইথন ফাইলের মধ্যে সাধারণ ডেটা কীভাবে ভাগ করবেন?

  4. পাইথন ব্যবহার করে একটি ফাইলে বাইনারি ডেটা কীভাবে লিখবেন?