• 0

كيف أستخرج جزء معين من سلسلة نصية في بايثون؟

لو فرضنا أن لدي السلسلة النصية التالية 'gfgfdAAA1234ZZZuijjk' وأريد استخراج جزء 1234 وكل ما أعرفه أن هناك AAA قبل الرقم وZZZ بعده، فما الطريقة الصحيحة لفعل ذلك؟
مثال على ما أريده:

echo "$STRING" | sed -e "s|.*AAA\(.*\)ZZZ.*|\1|"

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يوجد عدة طرق في لغة بايثون لفعل ذلك، بعضها باستخدام التعابير النمطية والآخر فبدونها، فمثلا يمكنك استخدام دوال مكتبة التعابير النمطية للبحث عن AAA و ZZZ واستخراج ما بينها كما في المثال التالي:

import re

text = 'gfgfdAAA1234ZZZuijjk'

m = re.search('AAA(.+?)ZZZ', text)
if m:
    found = m.group(1)

# found: 1234

أو يمكنك تطوير المثال السابق قليلا باستخدام try except كما في المثال التالي:

import re

text = 'gfgfdAAA1234ZZZuijjk'

try:
    found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
    # AAA, ZZZ not found in the original string
    found = '' # apply your error handling

# found: 1234

وإذا لم ترغب باستخدام التعابير النمطية فيمكنك في هذه الحالة استخدام دوال المدمج في بايثون مثل دالة find كما في المثال التالي:
 

>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن