কম্পিউটার

পাইথনে স্ট্রাকচার্ড স্ট্রিং থেকে প্রয়োজনীয় ডেটা কীভাবে বের করবেন?


পরিচয়...

স্ট্রাকচার্ড স্ট্রিং থেকে প্রয়োজনীয় ডেটা/ক্ষেত্র বের করার জন্য আমি আপনাকে কয়েকটি পদ্ধতি দেখাব। এই পদ্ধতিগুলি সাহায্য করবে, যেখানে ইনপুট কাঠামোর বিন্যাস একটি পরিচিত বিন্যাসে রয়েছে।

কিভাবে করবেন..

1. পদ্ধতিটি বোঝার জন্য আসুন একটি ডামি বিন্যাস তৈরি করি৷

Report: <> - Time: <> - Player: <> - Titles: - Country: <>

রিপোর্ট:Daily_Report - সময়:2020-10-16T01:01:01.000001 - খেলোয়াড়:ফেদেরার - শিরোনাম:20 - দেশ:সুইজারল্যান্ড

report = 'Report: Daily_Report - Time: 2020-10-10T12:30:59.000000 - Player: Federer - Titles: 20 - Country: Switzerland'

2. রিপোর্ট থেকে আমি প্রথম যে জিনিসটি লক্ষ্য করেছি তা হল বিভাজক যা "-"। আমরা এগিয়ে যাব এবং "-"

দিয়ে প্রতিবেদনটি পার্স করব
fields = report.split(' - ')
name, time, player , titles, _ = fields

print(f"Output \n *** The report name {name} generated on {time} has {titles} titles for {player}. ")

আউটপুট

*** The report name Report: Daily_Report generated on Time: 2020-10-10T12:30:59.000000 has Titles: 20 titles for Player: Federer.

3. এখন আউটপুট আশানুরূপ নয় যেমন আমরা এখনও কিছু লেবেল দেখতে পাচ্ছি যেমন Report:, Time:, Player:যার প্রয়োজন নেই।

# extract only report name
formatted_name = name.split(':')[1]

# extract only player
formatted_player = player.split(':')[1]

# extract only titles
formatted_titles = int(titles.split(':')[1])

# extract only titles
new_time = time.split(': ')[1]

print(f"Output \n {formatted_name} , {new_time}, {formatted_player} , {formatted_titles}")

আউটপুট

Daily_Report , 2020-10-10T12:30:59.000000, Federer , 20

4. এখন টাইমস্ট্যাম্পটি আইএসও ফরম্যাটে রয়েছে, যা আপনি চাইলে বিভক্ত করা যেতে পারে বা রেখে দিতে পারেন। আমি আপনাকে দেখাই কিভাবে আপনি একটি টাইমস্ট্যাম্প ক্ষেত্র বিভক্ত করতে পারেন৷

from datetime import datetime
formatted_date = datetime.fromisoformat(new_time)

print(f"Output \n{formatted_date}")

আউটপুট

2020-10-10 12:30:59
  • এখন আমরা এই সমস্ত ধাপগুলিকে একটি একক ফাংশনে একত্রিত করব।

def parse_function(log):
"""
Function : Parse the given log in the format
Report: <> - Time: <> - Player: <> - Titles: - Country: <>
Args : log
Return : required data
"""
fields = log.split(' - ')
name, time, player , titles, _ = fields

# extract only report name
formatted_name = name.split(':')[1]

# extract only player
formatted_player = player.split(':')[1]

# extract only titles
formatted_titles = int(titles.split(':')[1])

# extract only titles
new_time = time.split(': ')[1]

return f"{formatted_name} , {new_time}, {formatted_player} , {formatted_titles}"

if __name__ == '__main__':
report = 'Report: Daily_Report - Time: 2020-10-10T12:30:59.000000 - Player: Federer - Titles: 20 - Country: Switzerland'
data = parse_function(report)
print(f"Output \n{data}")

আউটপুট

Daily_Report , 2020-10-10T12:30:59.000000, Federer , 20

6. আমরা এটিকে কিছুটা সহজ করতে পার্স মডিউল ব্যবহার করতে পারি। আপনি ফর্ম্যাট দেখতে একটি টেমপ্লেট তৈরি করুন. এটিকে আরও সহজে করতে আমরা পার্স মডিউল ব্যবহার করতে পারি।

প্রথমে পার্স মডিউল ইনস্টল করুন - pip install parse

from parse import parse
report = 'Report: Daily_Report - Time: 2020-10-10T12:30:59.000000 - Player: Federer - Titles: 20 - Country: Switzerland'

# Looking at the report, create a template
template = 'Report: {name} - Time: {time} - Player: {player} - Titles: {titles} - Country: {country}'

# Run parse and check the results
data = parse(template, report)
print(f"Output \n{data}")

আউটপুট

<Result () {'name': 'Daily_Report', 'time': '2020-10-10T12:30:59.000000', 'player': 'Federer', 'titles': '20', 'country': 'Switzerland'}>

7. একটি সাধারণ ওয়ান লাইনারের সাহায্যে আমরা টেমপ্লেট সংজ্ঞায়িত করে লগ থেকে ডেটা বের করতে পারি। এখন আসুন স্বতন্ত্র মান বের করি।

print(f"Output \n {data['name']} - {data['time']} - {data['player']} - {data['titles']} - {data['country']}")

আউটপুট

Daily_Report - 2020-10-10T12:30:59.000000 - Federer - 20 - Switzerland

উপসংহার :

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


  1. কিভাবে একটি Matplotlib প্লট থেকে তথ্য নিষ্কাশন?

  2. পাইথনে দুটি স্ট্রিং কীভাবে সংযুক্ত করবেন?

  3. পাইথনে উইকিপিডিয়া ডেটা কীভাবে বের করবেন?

  4. ওয়েবসাইট থেকে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ডেটা কীভাবে বের করবেন