تقنية

raw_decode في بايثون: هل نجاحه يثبت صلاحية النص كله؟

نهاية الجزء 7
قراءة البداية. [1] [2]

نجاح قراءة البداية لا يختبر كل ما بعدها. [1] [2]

الخلاصة السريعة

لا؛ يقبل raw_decode بدايةً صالحة مع بيانات لاحقة في مثالنا. [1] [2]

  • القيمة المقروءة القائمة ['bud']. [1] [2]
  • موضع نهاية الجزء المقروء 7. [1] [2]
  • يبقى المقطع ' tail' بعد هذا الموضع. [1] [2]
  • decode للنص كله يرفع JSONDecodeError برسالة Extra data. [1] [2]
  • اختبرنا 3.12.14؛ الفراغ اللاحق وحده مقبول في decode. [1] [2]

المثال

from json import JSONDecoder,JSONDecodeError
d=JSONDecoder()
raw='["bud"] tail'
value,end=d.raw_decode(raw)
print(value,end,repr(raw[end:]))
try:
    d.decode(raw)
except JSONDecodeError as e:
    print(e.msg)

[1] [2]

النهاية والباقي

المصدر هنا يعيد القيمة وموضع النهاية. أول مخرج ['bud'] 7 ' tail'، ثم Extra data. راجع الباقي وفق المطلوب؛ قراءة البداية ليست إثباتًا بأن النص كله وثيقة واحدة. [1] [2]

باقي النص tail
الباقي. [1] [2]

النطاق

الفراغ اللاحق وحده يختلف عن كلمة tail؛ يقبله decode في تحكم منفصل. لا نعالج بداية بفراغات في المثال، ولا نفحص معنى بيانات التطبيق. [1] [2]

المراجع

  1. Python 3.12: JSONDecoder.raw_decode
  2. CPython 3.12.14: json/decoder.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.