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

कैसे अजगर में संरचित तार से आवश्यक डेटा निकालने के लिए?

परिचय...

मैं आपको संरचित स्ट्रिंग्स से आवश्यक डेटा/फ़ील्ड निकालने के लिए कुछ तरीके दिखाऊंगा। ये दृष्टिकोण मदद करेंगे, जहां इनपुट संरचना का प्रारूप ज्ञात प्रारूप में है।

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

1. आइए दृष्टिकोण को समझने के लिए एक डमी प्रारूप बनाएं।

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

रिपोर्ट:डेली_रिपोर्ट - समय: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. अब आउटपुट अपेक्षित नहीं है क्योंकि हम अभी भी कुछ लेबल देख सकते हैं जैसे रिपोर्ट:, टाइम:, प्लेयर:जिनकी आवश्यकता नहीं है।

# 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. इसे थोड़ा आसान बनाने के लिए हम parse मॉड्यूल का उपयोग कर सकते हैं। जैसा कि आप देखते हैं कि प्रारूप एक टेम्पलेट बनाता है। इसे और आसानी से करने के लिए हम पार्स मॉड्यूल का उपयोग कर सकते हैं।

सबसे पहले पार्स मॉड्यूल को इनस्टॉल करें - 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 प्लॉट से डेटा कैसे निकालें?

    Matplotlib में एक प्लॉट से डेटा निकालने के लिए, हम get_xdata() . का उपयोग कर सकते हैं और get_ydata() तरीके। कदम आकृति का आकार सेट करें और सबप्लॉट के बीच और आसपास पैडिंग समायोजित करें। numpy का उपयोग करके y डेटा पॉइंट बनाएं। प्लॉट y डेटा पॉइंट color=red . के साथ और लाइनविड्थ=5 । डेटा निकालने के लिए

  1. पायथन में विकिपीडिया डेटा कैसे निकालें?

    इस लेख में, हम देखेंगे कि पायथन का उपयोग करके विकिपीडिया डेटा कैसे निकाला जाता है। वेबसाइटों से मेटा जानकारी प्राप्त करने के लिए वेब स्क्रैपर्स बनाने के लिए पायथन का व्यापक रूप से उपयोग किया जाता है। इस लेख के लिए, हम विकिपीडिया स्रोत यूआरएल से डेटा प्राप्त करने के लिए विकिपीडिया एपीआई और पुस्तकालय

  1. वेबसाइट से डेटा को एक्सेल में स्वचालित रूप से कैसे निकालें

    डेटा निकालना (डेटा संग्रह और अद्यतन) स्वचालित रूप से एक वेब पेज से आपके एक्सेल वर्कशीट में कुछ नौकरियों के लिए महत्वपूर्ण हो सकता है। एक्सेल आपको वेब पेज से डेटा एकत्र करने का अवसर देता है। यह उन लोगों के लिए सबसे अधिक उपयोग की जाने वाली एक्सेल सुविधाओं में से एक है जो अपने डेटा विश्लेषण कार्य के लि