Last active
October 18, 2024 01:00
-
-
Save omamkaz/2bba2742dc053559469096b8ade748b3 to your computer and use it in GitHub Desktop.
simple python code to convert between arabic and english numbers
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ar_numbers = "٠١٢٣٤٥٦٧٨٩" | |
en_numbers = "0123456789" | |
ar_number = "١٤٢٣٤٠٣٧osama" | |
en_number = "14234037osama" | |
def convert_numbers(text: str, to_language: str = "en") -> str: | |
def _convertor(text: str, from_language: str, to_language: str) -> str: | |
return "".join([to_language[from_language.index(n)] if n in from_language else n for n in text]) | |
if to_language == "en": | |
return _convertor(text, ar_numbers, en_numbers) | |
elif to_language == "ar": | |
return _convertor(text, en_numbers, ar_numbers) | |
else: | |
raise ValueError("Invalid language") | |
print(convert_numbers(en_number, "ar")) | |
print(convert_numbers(ar_number, "en")) | |
## Using Enum | |
from enum import StrEnum | |
class Language(StrEnum): | |
arabic = ar = "٠١٢٣٤٥٦٧٨٩" | |
english = en = "0123456789" | |
def convert_numbers(text: str, from_language: Language, to_language: Language) -> str: | |
return "".join( | |
map( | |
lambda n: to_language[from_language.value.index(n)] if n in from_language.value else n, | |
text | |
) | |
) | |
print(convert_numbers(en_number, Language.en, Language.ar)) | |
print(convert_numbers(ar_number, Language.ar, Language.en)) | |
## Using Built-in str method | |
def convert_numbers(text: str, to_language: str = "en") -> str: | |
# Create translation tables for faster conversion | |
ar_to_en = str.maketrans(ar_numbers, en_numbers) | |
en_to_ar = str.maketrans(en_numbers, ar_numbers) | |
if to_language not in ("en", "ar"): | |
raise ValueError("Invalid language") | |
return text.translate(ar_to_en if to_language == "en" else en_to_ar) | |
print(convert_numbers(en_number, "ar")) | |
print(convert_numbers(ar_number, "en")) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment