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

كيفية التعامل مع أخطاء القيمة عند تقسيم خطوط الإدخال باستخدام `split()`؟

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

How to Handle ValueErrors When Splitting Input Lines with `split()`?

تقسيم خطوط الإدخال: التعامل مع أخطاء القيمة

عند تقسيم خطوط الإدخال باستخدام وظيفة Split () ، من الضروري التأكد من أن خطوط الإدخال تحتوي على الفواصل المتوقعة إذا كان السطر يفتقر إلى الفاصل المعين، مثل النقطتين (:)، فستُرجع الدالة Split() إما قيمة واحدة أو استثناء.

فهم أخطاء القيمة

  • ValueError: تحتاج إلى أكثر من قيمة واحدة لتفريغها: يحدث عندما تقوم الدالة Split() بإرجاع قيمة واحدة فقط، مما يعني أنه لا يوجد فاصل في سطر الإدخال.
  • ValueError: عدد كبير جدًا من القيم التي لا يمكن فك ضغطها (متوقع 2): على العكس من ذلك، يشير هذا الخطأ إلى أن الدالة Split() أعادت قيمًا أكثر من المتوقع. غالبًا ما يحدث ذلك بسبب فواصل متعددة في سطر الإدخال.

سبب ValueErrors

في التعليمات البرمجية المحددة الخاصة بك، من المحتمل أن تنشأ ValueErrors من السطر الأخير في ملف الإدخال، والذي قد يحتوي على مسافات فارغة فقط. عند تنفيذ التابع string.strip()‎ على هذه المساحات الفارغة، فإنه يُرجع سلسلة فارغة، والتي عند تقسيمها على نقطتين تعطي سلسلة فارغة. هذا يتركك مع عنصر واحد، مما يؤدي إلى ظهور الخطأ "الحاجة إلى أكثر من قيمة واحدة لفك الضغط".

الحل

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

questions_list = [] قائمة الإجابات = [] مع فتح ('qanda.txt'، 'r') كملف_الأسئلة: للخط في questions_file: الخط = الخط. الشريط () إذا ':' في السطر: الأسئلة والأجوبة = line.split(':') questions_list.append(الأسئلة) Answers_list.append(answers)
questions_list = []
answers_list = []

with open('qanda.txt', 'r') as questions_file:
    for line in questions_file:
        line = line.strip()
        if ':' in line:
            questions, answers = line.split(':')
            questions_list.append(questions)
            answers_list.append(answers)
من خلال إضافة عبارة if التي تتحقق من وجود فاصل النقطتين، فإنك تقوم بتصفية الأسطر التي تفتقر إليه وتمنع الدالة Split() من رفع ValueErrors.

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3