في برنامج Python النصي، أردت اختبار سلاسل HTML مختلفة باستخدام نفس المنطق. كان أسلوبي هو التكرار عبر نطاق لإنشاء مثيلات متعددة لمتغيرات سلسلة HTML، لكنه لم يكن يعمل كما هو متوقع.
# DO NOT DO THIS for i in range(1, 5): html = f"html{i}" soup = BeautifulSoup(html, "html.parser") print('----', soup)
يرجع السلوك الذي كنت ألاحظه إلى الطريقة التي يتم بها تفسير السلسلة المنسقة f"html{i}". في الكود الخاص بي، يتم تقييم f"html{i}" وفقًا للأحرف "html1" و"html2" و"html3" و"html4" بدلاً من محتويات المتغيرات المسماة html1 وhtml2 وما إلى ذلك.
لا يقوم بايثون تلقائيًا باستبدال f"html{i}" بقيمة المتغير الذي تم إنشاء اسمه ديناميكيًا مثل html1 أو html2. بدلاً من ذلك، يقوم بتقييم السلسلة كنمط ثابت يتكون من البادئة "html" متبوعة بقيمة i.
إذا كنت أرغب في استخدام محتويات المتغيرات المحددة مسبقًا html1، html2، وما إلى ذلك، فأنا بحاجة إلى استرداد قيمها بشكل صريح، على سبيل المثال استخدام قاموس لتعيين أسماء السلاسل إلى محتواها الفعلي.
إليك مثال يوضح ذلك:
from bs4 import BeautifulSoup # Define the variables html1 = "Test 1" html2 = "Test 2" html3 = "Test 3" html4 = "Test 4" # Store them in a dictionary for easy access html_dict = { "html1": html1, "html2": html2, "html3": html3, "html4": html4 } # Iterate and process each html content for i in range(1, 5): key = f"html{i}" html = html_dict[key] soup = BeautifulSoup(html, "html.parser") print('----', soup)
تعريف المتغيرات:
قاموس البحث عن المتغيرات:
التكرار على المفاتيح:
التحليل والطباعة:
---- Test 1 ---- Test 2 ---- Test 3 ---- Test 4
يقوم هذا الأسلوب بالوصول ديناميكيًا إلى محتوى المتغيرات استنادًا إلى فهرس التكرار وطباعة المحتوى المقصود بشكل صحيح.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3