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 |