কম্পিউটার টিউটোরিয়াল

পাইথন: টেক্সট ফাইল লিস্টে পড়া

ফাইলে ডেটা সংরক্ষণ করলে আপনি প্রোগ্রাম যেসব ডেটার সাথে কাজ করছে সেগুলোর রেকর্ড রাখতে পারেন। এর মানে আপনাকে প্রোগ্রামের সাথে কাজ করার সময় ডেটা আবার জেনারেট করতে হবে না। আপনি সেটি ফাইল থেকে পড়ে নিন।

ফাইল পড়তে, readlines() মেথড ব্যবহার করুন। একবার ফাইল পড়লে, আপনি সেই লাইনগুলিকে লিস্টে রূপান্তর করতে split() ব্যবহার করুন।

এই গাইডে, আমরা split() মেথড ব্যবহার করে টেক্সট ফাইল লিস্টে পড়ার পদ্ধতি আলোচনা করব। আমরা একটি উদাহরণ রেফার করব যাতে আপনি দ্রুত টেক্সট ফাইল লিস্টে পড়া শুরু করতে পারেন।

পাইথন: টেক্সট ফাইল লিস্টে পড়া

grilled_cheese.txt নামে একটি টেক্সট ফাইল দিয়ে শুরু করি। এই ফাইলটিতে একটি গ্রিল্ড চিজ স্যান্ডউইচের ইনগ্রিডিয়েন্ট রয়েছে। আমাদের ফাইল কন্টেন্ট এরকম দেখতে পারে:

2 tbsp, ricotta
1 tbsp, grated parmesan
50g, mozzarella
25g, gorgonzola
2, thick slices white bread
1 tbsp, butter

আমাদের ফাইলের প্রথম কলমে প্রতিটি ইনগ্রিডিয়েন্টের কোয়ান্টিটি রয়েছে। দ্বিতীয় কলমে ইনগ্রিডিয়েন্টের নাম রয়েছে।

আমরা এই ফাইলটি আমাদের কোডে open() এবং readlines() মেথড ব্যবহার করে পড়ি:

with open("grilled_cheese.txt", "r") as grilled_cheese:
    lines = grilled_cheese.readlines()
    print(lines)

আমাদের কোডে, আমরা "grilled_cheese.txt" নামে একটি ফাইল রিড মোডে ওপেন করেছি। রিড মোড open() স্টেটমেন্টে "r" ক্যারেক্টার দিয়ে ডিনোট করা হয়েছে। এরপর, আমরা সে লাইনগুলো কনসোলে প্রিন্ট করেছি।

আমাদের পাইথন কোড কী রিটার্ন করে তা দেখি:

['2 tbsp, ricotta\n', '1 tbsp, grated parmesan\n', '50g, mozzarella\n', '25g, gorgonzola\n', '2, thick slices white bread\n', '1 tbsp, butter\n']

আমাদের কোড আমাদের ফাইলের প্রতিটি লাইনের একটি লিস্ট রিটার্ন করে। এটি পুরোপুরি আমাদের আশা করা আউটপুট নয়। আমরা ফাইলটি লিস্টে পড়েছি, কিন্তু একটি সমস্যা আছে: প্রতিটি লাইন আলাদা স্ট্রিংয়ে সংরক্ষিত। ইনগ্রিডিয়েন্ট এবং তাদের কোয়ান্টিটি আলাদা নয়।

ভ্যালু লিস্টে ভাগ করা

এই সমস্যা সমাধান করতে, আমরা split() মেথড ব্যবহার করি। এই মেথড আমাদের একটি স্ট্রিংকে আমরা যেই সেপারেটর ক্যারেক্টার স্পেসিফাই করি সেটি ব্যবহার করে ভাগ করতে দেয়।

শুরুতে, আমরা দুটি লিস্ট ডিক্লেয়ার করি: quantities এবং ingredients। এই কোড ইনডেন্টেড থাকবে কারণ এটি আমাদের open() ব্লক ऑफ কোডের অংশ।

quantities = []
ingredients = []

আমরা আমাদের লিস্টের ওপর ইটারেট করব যাতে আমরা আমাদের ফাইল থেকে প্রতিটি লাইন টেক্সট অ্যাক্সেস করতে পারি। তারপর আমরা প্রতিটি লাইন দুটি parçায় ভাগ করব। ভাগ করার পয়েন্ট হলো প্রতিটি লাইনে কমা এবং একটি স্পেস:

for l in lines:
    as_list = l.split(", ")
    quantities.append(as_list[0])
    ingredients.append(as_list[1])

for লুপ আমাদের ফাইল লাইন বাই লাইন পড়তে দেয়। "as_list"-এ প্রথম ভ্যালু হলো ইনগ্রিডিয়েন্টের কোয়ান্টিটি। দ্বিতীয় ভ্যালু হলো ইনগ্রিডিয়েন্টের নাম। তারপর আমরা এই দুটি লিস্ট কনসোলে প্রিন্ট করি:

print(quantities)
print(ingredients)

আমাদের কোড রান করি:

['2 tbsp, ricotta\n', '1 tbsp, grated parmesan\n', '50g, mozzarella\n', '25g, gorgonzola\n', '2, thick slices white bread\n', '1 tbsp, butter\n']
['2 tbsp', '1 tbsp', '50g', '25g', '2', '1 tbsp']
['ricotta\n', 'grated parmesan\n', 'mozzarella\n', 'gorgonzola\n', 'thick slices white bread\n', 'butter\n']

আমাদের কোড কনসোলে তিনটি লিস্ট প্রিন্ট করে। প্রথম লিস্ট আমাদের ফাইলের সব লাইন টেক্সটের লিস্ট। দ্বিতীয় লিস্ট আমাদের ফাইল থেকে সব কোয়ান্টিটি ধারণ করে। তৃতীয় লিস্ট সব ইনগ্রিডিয়েন্ট ধারণ করে।

নিউ লাইন রিমুভ করা

এখনো একটি উন্নতি বাকি আছে। প্রতিটি ইনগ্রিডিয়েন্ট "\n" ক্যারেক্টারের সাথে শেষ হয়। এই ক্যারেক্টার নিউ লাইন ডিনোট করে। আমরা এই ক্যারেক্টার replace() মেথড ব্যবহার করে রিমুভ করতে পারি:

for l in lines:
    as_list = l.split(", ")
    quantities.append(as_list[0])
    ingredients.append(as_list[1].replace("\n", ""))

আমাদের for লুপে, আমরা "\n" ভ্যালুকে একটি খালি স্ট্রিং দিয়ে রিপ্লেস করি। আমরা এটি as_list[1] ভ্যালুতে করি যা প্রতিটি ইনগ্রিডিয়েন্টের নামের সাথে করিলেটেড।

এখন যেহেতু আমরা এই পরিবর্তনটি করেছি, আমাদের প্রোগ্রাম প্রস্তুত:

with open("grilled_cheese.txt", "r") as grilled_cheese:
    lines = grilled_cheese.readlines()
    quantities = []
    ingredients = []
    for l in lines:
        as_list = l.split(", ")
        quantities.append(as_list[0])
        ingredients.append(as_list[1].replace("\n", ""))
    print(quantities)
    print(ingredients)

আমাদের কোড রান করি এবং দেখি কী হয়:

['2 tbsp', '1 tbsp', '50g', '25g', '2', '1 tbsp']
['ricotta', 'grated parmesan', 'mozzarella', 'gorgonzola', 'thick slices white bread', 'butter']

আমাদের কোড সফলভাবে আমাদের টেক্সট ফাইলকে দুটি লিস্টে রূপান্তর করল। একটি লিস্ট রেসিপির জন্য ইনগ্রিডিয়েন্টের কোয়ান্টিটি ধারণ করে। অন্য লিস্ট রেসিপিতে ব্যবহার করার ইনগ্রিডিয়েন্টগুলো ধারণ করে।

উপসংহার

আপনি open() এবং readlines() মেথড ব্যবহার করে একটি টেক্সট ফাইল পড়তে পারেন। টেক্সট ফাইল লিস্টে পড়তে, split() মেথড ব্যবহার করুন। এই মেথড স্ট্রিংকে একটি নির্দিষ্ট ক্যারেক্টারে লিস্টে ভাগ করে।

উপরের উদাহরণে, আমরা কমা এবং স্পেস (" , ") এর পজিশন বেইসিসে একটি স্ট্রিং লিস্টে ভাগ করেছি। এখন আপনি পাইথনে টেক্সট ফাইল লিস্টে পড়ার এক্সপার্ট হয়ে গেছেন।

  1. পাইথন রিড ফাইল: ধাপে ধাপে গাইড

  2. উইন্ডোজ ১১-এ একটি ফোল্ডারের ফাইল লিস্ট টেক্সট ফাইলে কপি করার পদ্ধতি

  3. পাইথন ফাইল হ্যান্ডলিং মাস্টার করুন: ফাইল তৈরি, পড়া, লেখা এবং ডিলিট সহজে

  4. পাইথনে CSV ফাইল পড়া এবং লেখা: csv এবং Pandas দিয়ে ধাপে ধাপে গাইড