اذهب إلى المحتوى

Amjad Alsharafi

الأعضاء
  • المساهمات

    3
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    2

أجوبة بواسطة Amjad Alsharafi

  1. بتاريخ 21 ساعات قال أسماء فؤاد:

    هل تقصد شيء آخر؟ اوحل آخر

    لا، الحل جيد.

    تستطيعين اختصار بعض السطور:

    
    # element = element.replace("\xe2\x80\xaa", "")
    # element = element.replace("\xe2\x80\xac", "")
    # element = element.replace("\xe2\x80\xab", "")
    
    # translate يستخدم للتبديل بين الحروف لكن يمكن حذف الحروف غيرالمرغوبة
    #			.عن طريق وضعها في الخانة الثانية
    element = element.translate(None, "\xe2\x80\xaa" + "\xe2\x80\xac" + "\xe2\x80\xab")

     

    بالنسبة لمشكلة عدم ظهور الحروف العربية داخل القائمة(list)، فلم أجد تفسيرا لها، لكن هناك حل.

    يبدو أن المشكلة غير موجودة في نسخة البايثون3 (Python3).

    #Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32
    
    def parse_1 (file, x=";", y="#"):
    	
        f = open(file, encoding='utf-8').readlines()
        #			^^^^^^^
        # .يجب تحديد طريقة التشفير التي يجب قراءة الملف بها
        # .	من الممكن أن يتم قراءة الملف بشك خاطئ اذا تم استعمال التشفير التلقائي
    
        for line in f:
            if line[0] == y:
                continue
    
            line = line.strip()
            print(line) #string
            line = line.split(x)
            print(line) #list
            for element in line:
                print(element)
                
    		print()
            
    parse_1('arabic.txt', '!')

    الناتج:

    ١!٢!٣
    ['١', '٢', '٣']
    ١
    ٢
    ٣
    
    ٢!٣!٤
    ['٢', '٣', '٤']
    ٢
    ٣
    ٤
    
    ٣!٤!٥
    ['٣', '٤', '٥']
    ٣
    ٤
    ٥

     

    • أعجبني 1
  2. أولا: عند كتابة هذا النوع من الأسئلة يجب كتابة الكود أو (الجزء ذو المشكلة من الكود)، أيضا يفضّل ارفاق ملف النص ذو المشكلة.

     

    السؤال ليس سؤال مرحلة ابتدائية أبدا.

    هذا بسبب اليونيكود و طريقة كتابة اللغة العربية.

    كما هو معروف اللغة العربية و بعض اللغات الأخرى تكتب من اليمين الى اليسار بعكس اللغة الإنجليزية.

    لكي يقوم الحاسب الآلي بكتابة الحروف العربية(مثلا) بطريقة صحيحة تم إستعمال حروف/رموز خاصة غير مرئية تخبر البرنامج بأنه يجب تغيير اتجاه الكتابة من هنا، ومنها:

    \xe2\x80\xaa (U+202A) -> LEFT-TO-RIGHT
    \xe2\x80\xab (U+202B) -> RIGHT-TO-LEFT
    \xe2\x80\xac (U+202C) -> POP DIRECTIONAL FORMATTING اعادة الوضع الإفتراضي

    **وغيرها.

     من أسباب ظهور هذه الرموز عند التشغيل الملف:

    1-ملف النص باللغة العربية وهذا الجزئ باللغة الإنجليزية.

    2-أن هذه الأرقام مسجلة كرموز عربية بسبب لوحة المفاتيح. (لهذا السبب يتم تجاهل رموز التحويل عند النسخ ).

    ----------------------------

    اذا كانت المشكلة بسبب لوحة المفاتيح: تستطيع عمل فلتر داخل البرنامج اذا كان هذا لا يؤثر على إتجاه النص.

     

    إذا كنت تريدين معرفة المزيد بهذا الشأن تستطيعين البحث عن اليونيكود(Unicode) وكيفية عمله.

    روابط:

    Bi-directional_text

    Unicode

    • أعجبني 1
×
×
  • أضف...