Skip to content

9. Text Processing — متن پروسیسنگ

Difficulty: Advanced — اعلیٰ
Time: ~25 minutes


Importing — درآمد

درآمد {
    بڑے_حروف, چھوٹے_حروف, عنوانی, الٹا_کریں,
    تراشو, تقسیم, سطر_تقسیم, ملائیں, بدلیں,
    گنو, موجود_ہے, شروع_سے, آخر_سے,
    خالی_ہے, صرف_اعداد, صرف_حروف,
    پیڈ_بائیں, پیڈ_دائیں, پیڈ_وسط,
    ذیل_متن, تلاش_کریں, فارمیٹ,
    ریجیکس_تلاش, ریجیکس_بدلیں, ریجیکس_تمام,
    دہرائیں,
    اعراب_ہٹائیں, نستعلیق_معیاری, الفاظ,
    اردو_حروف_ہیں, ہندی_اعداد, ہندی_اعداد_میں,
    اردو_میں_گنتی, مماثلت, ایک_جیسا_ہے, حروف_گنو,
    انکوڈ, ڈیکوڈ
} سے "اردو/متن";

اردو: یہ لائبریری اضافی طریقے فراہم کرتی ہے۔ روزمرہ کے کام کے لیے بلٹ-ان .بڑے_حروف(), .چھوٹے_حروف() وغیرہ کافی ہیں۔


Case & Reversal — حروف تبدیل

لکھو(بڑے_حروف("hello"));          // HELLO
لکھو(چھوٹے_حروف("WORLD"));        // world
لکھو(عنوانی("احمد علی"));         // احمد علی (title case)
لکھو(الٹا_کریں("اردو"));           // ودرا

Trimming — تراشنا

لکھو(تراشو("  سلام  "));           // سلام  (both ends)
لکھو(بائیں_تراشو("  سلام  "));     // سلام   (left only)
لکھو(دائیں_تراشو("  سلام  "));    //   سلام  (right only)

// Trim specific characters
لکھو(تراشو("###اردو###", "#"));    // اردو

Split & Join — تقسیم و ملاپ

// Split on delimiter
متغیر الف = تقسیم("ا ب ج", " ");
لکھو(لمبائی(الف));    // 3

// Split on newlines
متغیر سطریں = سطر_تقسیم("سطر ایک\nسطر دو\nسطر تین");
لکھو(لمبائی(سطریں));  // 3

// Limit splits
متغیر حصے = تقسیم("ا:ب:ج:د", ":", 2);
لکھو(لمبائی(حصے));    // 3  (splits at most 2 times)

// Join list into string
لکھو(ملائیں("-", ["ا", "ب", "ج"]));     // ا-ب-ج
لکھو(ملائیں("، ", ["احمد", "فاطمہ"]));  // احمد، فاطمہ

Search & Replace — تلاش و بدلاؤ

// Search
لکھو(گنو("اردو اردو اردو", "اردو"));    // 3
لکھو(موجود_ہے("پاکستان", "پاک"));       // True
لکھو(شروع_سے("اردو", "ار"));           // True
لکھو(آخر_سے("اردو", "دو"));            // True
لکھو(تلاش_کریں("اردو پروگرامنگ", "پرو"));  // 5  (index)

// Replace
لکھو(بدلیں("اردو اردو", "اردو", "Urdu"));    // Urdu Urdu
لکھو(بدلیں("ا ا ا", "ا", "ب", 2));           // ب ب ا  (2 replacements)

Checks — جانچ

لکھو(خالی_ہے(""));        // True
لکھو(خالی_ہے("   "));     // True  (whitespace only = empty)
لکھو(خالی_ہے("سلام"));   // False

لکھو(صرف_اعداد("123"));   // True
لکھو(صرف_اعداد("12a"));   // False

لکھو(صرف_حروف("abc"));    // True
لکھو(صرف_حروف("a1b"));    // False

Padding & Alignment — پیڈنگ

// Left-align (pad right with spaces)
لکھو(پیڈ_بائیں("5", 4, "0"));          // 5000 → wait, this pads LEFT
// Actually: پیڈ_بائیں fills to the right (ljust)
لکھو(پیڈ_بائیں("سلام", 10));           // سلام       (5 spaces added right)

// Right-align (pad left with zeros)
لکھو(پیڈ_دائیں("5", 4, "0"));          // 000 5  (pads on left = rjust)

// Centre
لکھو(پیڈ_وسط("سلام", 11, "-"));        // ---سلام---

// Zero-fill
لکھو(صفر_بھریں("42", 5));              // 00042

Substring & Format — ذیل متن

// Extract substring — ذیل_متن(text, start, end)
لکھو(ذیل_متن("اردو پروگرامنگ", 0, 4));   // اردو
لکھو(ذیل_متن("اردو پروگرامنگ", 5));       // پروگرامنگ

// Format string — Python-style {}
لکھو(فارمیٹ("سلام {}! آپ {} سال کے ہیں۔", "احمد", 25));
// سلام احمد! آپ 25 سال کے ہیں۔

// Numbered placeholders
لکھو(فارمیٹ("{1} اور {0}", "ب", "الف"));  // الف اور ب

// Repeat
لکھو(دہرائیں("اردو ", 3));    // اردو اردو اردو 

Regular Expressions — ریجیکس

// Find all matches
متغیر اعداد_م = ریجیکس_تمام("[0-9]+", "عمر 25 ہے اور 2024 میں");
لکھو(اعداد_م);    // ['25', '2024']

// Replace pattern
لکھو(ریجیکس_بدلیں("[0-9]+", "N", "قیمت 500 روپے ہے"));
// قیمت N روپے ہے

// Search (returns match object or None)
متغیر نتیجہ = ریجیکس_تلاش("[0-9]{4}", "سال 2024 ہے");
اگر (نتیجہ) {
    لکھو(نتیجہ.group());    // 2024
}

// Common patterns
متغیر ای_میل = ریجیکس_تمام(r"[\w.]+@[\w.]+", "احمد@مثال.com");
متغیر نمبر_م = ریجیکس_تمام(r"\d+", "123 abc 456");

Urdu-Specific Functions — اردو مخصوص

Numerals — اعداد

// Eastern Arabic (Urdu/Hindi) ↔ Western digits
لکھو(ہندی_اعداد("۱۲۳۴۵"));      // 12345  (Urdu → Western)
لکھو(ہندی_اعداد_میں("12345")); // ۱۲۳۴۵  (Western → Urdu)

Numbers as Words — الفاظ میں

لکھو(اردو_میں_گنتی(25));         // پچیس
لکھو(اردو_میں_گنتی(100));        // ایک سو
لکھو(اردو_میں_گنتی(1000));       // ایک ہزار
لکھو(اردو_میں_گنتی(500000));     // پانچ لاکھ
لکھو(اردو_میں_گنتی(-7));         // منفی سات

Normalization — معیاری بنانا

// Remove diacritics (اعراب)
لکھو(اعراب_ہٹائیں("کِتَاب"));    // کتاب

// Normalise Arabic → Urdu script variants
لکھو(نستعلیق_معیاری("كتاب"));    // كتاب → کتاب (Arabic kaf → Urdu kaf)

Word Tokenisation — الفاظ

// Extract Urdu/Arabic words only (ignores Latin, punctuation, digits)
متغیر الفاظ_م = الفاظ("اردو پروگرامنگ 2024 — Urdu is fun");
لکھو(الفاظ_م);    // ['اردو', 'پروگرامنگ']

Script Detection — رسم الخط

لکھو(اردو_حروف_ہیں("اردو"));     // True
لکھو(اردو_حروف_ہیں("English"));  // False
لکھو(اردو_حروف_ہیں("Urdu اردو")); // True (mixed)

String Similarity — مماثلت

Levenshtein-based: 1.0 = identical, 0.0 = completely different.

لکھو(مماثلت("اردو", "اردو"));    // 1.0
لکھو(مماثلت("سلام", "کلام"));   // 0.75
لکھو(مماثلت("abc",  "xyz"));    // 0.0

// Equality with optional case-insensitivity
لکھو(ایک_جیسا_ہے("اردو", "اردو", سچ));    // False  (case-sensitive)
لکھو(ایک_جیسا_ہے("hello", "HELLO", جھوٹ)); // True   (case-insensitive)

Encoding — انکوڈنگ

// String → bytes
متغیر بائٹس = انکوڈ("اردو", "utf-8");
لکھو(قسم(بائٹس));    // bytes

// Bytes → string
متغیر متن_م = ڈیکوڈ(بائٹس, "utf-8");
لکھو(متن_م);          // اردو

// Character frequency
متغیر گنتی = حروف_گنو("اردو پروگرامنگ");
لکھو(گنتی["ر"]);     // 2

Practical Example: Urdu Text Cleaner — عملی مثال

درآمد {
    اعراب_ہٹائیں, نستعلیق_معیاری, الفاظ,
    تراشو, بدلیں, اردو_میں_گنتی, مماثلت
} سے "اردو/متن";

// Clean and normalise Urdu text
فنکشن صاف_کریں(متن_م) {
    متغیر صاف = اعراب_ہٹائیں(متن_م);    // remove diacritics
    صاف = نستعلیق_معیاری(صاف);          // normalise script
    صاف = تراشو(صاف);                    // trim whitespace
    واپس صاف;
}

// Word count
فنکشن الفاظ_گنو(متن_م) {
    واپس لمبائی(الفاظ(متن_م));
}

// Find near-duplicate lines
فنکشن قریبی_ڈھونڈو(سطریں, حد=0.8) {
    متغیر جوڑے = [];
    کے_لیے (متغیر الف میں سطریں) {
        کے_لیے (متغیر ب میں سطریں) {
            اگر (الف != ب اور مماثلت(الف, ب) >= حد) {
                جوڑے.شامل([الف, ب]);
            }
        }
    }
    واپس جوڑے;
}

متغیر متن_م = "اردو پروگرامنگ زبان ہے";
لکھو(صاف_کریں(متن_م));
لکھو(الفاظ_گنو(متن_م));    // 4
لکھو(اردو_میں_گنتی(الفاظ_گنو(متن_م)));    // چار

Quick Reference — فوری حوالہ

Function Description
بڑے_حروف(م) / چھوٹے_حروف(م) Case convert
عنوانی(م) Title case
الٹا_کریں(م) Reverse string
تراشو(م) Trim whitespace
تقسیم(م, جدا) Split
ملائیں(جوڑ, فہرست) Join
بدلیں(م, پرانا, نیا) Replace
تلاش_کریں(م, ذیل) Index of substring
ریجیکس_تمام(نمونہ, م) All regex matches
ریجیکس_بدلیں(نمونہ, نیا, م) Regex replace
اردو_میں_گنتی(ن) Number → Urdu words
ہندی_اعداد(م) Urdu digits → Western
ہندی_اعداد_میں(م) Western → Urdu digits
اعراب_ہٹائیں(م) Strip diacritics
نستعلیق_معیاری(م) Normalise Urdu script
الفاظ(م) Urdu word tokeniser
مماثلت(الف, ب) String similarity 0–1

← Previous: Machine Learning | Next: Web Scraping →