"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكن استخدام التعبيرات العادية لاستخراج قيم الفاصلة العائمة من السلاسل؟

كيف يمكن استخدام التعبيرات العادية لاستخراج قيم الفاصلة العائمة من السلاسل؟

تم النشر بتاريخ 2024-11-09
تصفح:347

How Can Regular Expressions Be Used to Extract Floating-Point Values from Strings?

استخراج قيم الفاصلة العائمة من السلاسل ذات التعبيرات العادية

خذ بعين الاعتبار مهمة استخراج قيمة مزدوجة من سلسلة. لتحقيق ذلك باستخدام تعبير عادي، يتم اتباع الخطوات التالية:

  1. إنشاء التعبير العادي:

    import re
    
    pattr = re.compile(???)
    x = pattr.match("4.5")
  2. استخدام التعبيرات العادية المتوافقة مع Perl:
    تعبير عادي مناسب من وثائق Perl لاستخراج الفاصلة العائمة القيم هي:

    re_float = re.compile("""(?x)
    ^
       [ -]?\ *      # an optional sign and space
       (             # integers or f.p. mantissas
           \d        # start with a ...
           (           # ? takes care of integers
               \.\d* # mantissa a.b or a.
           )?
          |\.\d      # mantissa .b
       )
       ([eE][ -]?\d )?  # optionally match an exponent
    $""")
  3. البحث عن التطابقات واسترجاعها:
    لاستخراج القيمة المزدوجة، قم بتطبيق التعبير العادي المترجم على السلسلة المطلوبة:

    m = re_float.match("4.5")
    print(m.group(0))

    سينتج عن ذلك:

    4.5
  4. استخراج قيم متعددة من سلسلة:
    لاستخراج قيم فاصلة عائمة متعددة من سلسلة أكبر، استخدم طريقة findall():

    s = """4.5 abc -4.5 abc - 4.5 abc   .1e10 abc . abc 1.01e-2 abc 
        1.01e-.2 abc 123 abc .123"""
    print(re.findall(r"[ -]? *(?:\d (?:\.\d*)?|\.\d )(?:[eE][ -]?\d )?", s))
    سيؤدي ذلك إلى إرجاع قائمة بالقيم المستخرجة، بما في ذلك:

    ['4.5', '-4.5', '- 4.5', '.1e10', '1.01e- 2', '1.01', '-.2', '123', '.123']
    ['4.5', '-4.5', '- 4.5', '  .1e10', ' 1.01e-2', '       1.01', '-.2', ' 123', ' .123']
بيان الافراج أعيد طبع هذه المقالة على: 1729482499 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3