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

Python में Number वाले String को Correctly Sort कैसे करें?


Natural Sort / Human Sort

इस प्रकार का Sort जिसमें आप String के अंदर Numbers के Basis पर Sort करना चाहते हैं, उसे Natural Sort या Human Sort कहते हैं।

उदाहरण

यदि आपके पास Text है:

['Hello1', 'Hello12', 'Hello29', 'Hello2', 'Hello17', 'Hello25']

तो आप Sorted List चाहते हैं:

['Hello1', 'Hello2', 'Hello12', 'Hello17', 'Hello25', 'Hello29']

न कि:

['Hello1', 'Hello12', 'Hello17', 'Hello2', 'Hello25', 'Hello29']

Solution: Custom Key Function के साथ Regex

import re

def atoi(text):
    return int(text) if text.isdigit() else text

def natural_keys(text):
    return [atoi(c) for c in re.split('(\d+)', text)]

my_list = ['Hello1', 'Hello12', 'Hello29', 'Hello2', 'Hello17', 'Hello25']
my_list.sort(key=natural_keys)
print(my_list)

Output:

['Hello1', 'Hello2', 'Hello12', 'Hello17', 'Hello25', 'Hello29']

How it Works:

  1. re.split('(\d+)', text) - String को Digits और Non-digits में Split करता है, Digits को Groups में Keep करता है
  2. atoi() - Digit Strings को Integers में Convert करता है, Non-digits को As-is रखता है
  3. Resulting List को Sort Key के रूप में उपयोग करता है

Ready-to-use Function (natsort Library):

# pip install natsort
from natsort import natsorted

my_list = ['Hello1', 'Hello12', 'Hello29', 'Hello2', 'Hello17', 'Hello25']
print(natsorted(my_list))

Pathlib के साथ Files Sort करना:

from pathlib import Path
from natsort import natsorted

files = natsorted(Path('.').glob('*.txt'), key=lambda p: p.name)

  1. PowerPoint Format Painter से टेक्स्ट फ़ॉर्मेट कैसे करें PowerPoint Format Painter से टेक्स्ट फ़ॉर्मेट कैसे करें

    आपने PowerPoint में टेक्स्ट की एक स्ट्रिंग या पूरे टेक्स्ट ब्लॉक को दो या तीन अलग-अलग विकल्प लागू करके कितनी बार बदला है? शायद आपने फ़ॉन्ट आकार बढ़ाया, उसका रंग बदला, और उसे इटैलिक बना दिया। और अब आप इन समान परिवर्तनों को कई और टेक्स्ट स्ट्रिंग्स पर लागू करना चाहते हैं। अपने आप को आसान बनाएं और इन स

  1. Android SQLite में स्ट्रिंग नंबर को कैसे सॉर्ट करें? Android SQLite में स्ट्रिंग नंबर को कैसे सॉर्ट करें?

    Android में SQLite डेटाबेस SQLite एक ओपन-सोर्स SQL डेटाबेस है जो डेटा को डिवाइस पर टेक्स्ट फ़ाइल में स्टोर करता है। Android में बिल्ट-इन SQLite इम्प्लीमेंटेशन आता है। उदाहरण: स्ट्रिंग नंबर को संख्यात्मक क्रम में सॉर्ट करना यह उदाहरण दर्शाता है कि SQLite में टेक्स्ट के रूप में स्टोर नंबरों को सही सं

  1. - पायथन में स्ट्रिंग के सभी घटनाओं को दूसरी स्ट्रिंग से कैसे बदलें?

    पायथन में स्ट्रिंग क्लास में replace नामक एक मेथड होता है। यह उस स्ट्रिंग को इनपुट के रूप में लेता है जिसे बदला जाना है और वह स्ट्रिंग जिससे बदलना है। इसे स्ट्रिंग ऑब्जेक्ट पर कॉल किया जाता है। आप सभी no को yes से बदलने के लिए इस मेथड को निम्न प्रकार से कॉल कर सकते हैं: >>> no one knows how