في لغة بايثون، قم بإنتاج HTML مع تسليط الضوء على الاختلافات بين سلسلتين بسيطتين

StackOverflow https://stackoverflow.com/questions/9396254

  •  29-10-2019
  •  | 
  •  

سؤال

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

hightlight_diff('Hello world','HeXXo world','red')

...يجب أن ترجع السلسلة:

'He<span style="color:red">XX</span>o world'

لقد بحثت في Google ورأيت difflib مذكورًا، لكن من المفترض أن يكون قديمًا ولم أجد أي عرض توضيحي بسيط جيد.

هل كانت مفيدة؟

المحلول

كل ما تحتاجه يأتي من difflib - على سبيل المثال:

>>> import difflib
>>> d = difflib.Differ()
>>> l = list(d.compare("hello", "heXXo"))
>>> l
['  h', '  e', '- l', '- l', '+ X', '+ X', '  o']

كل عنصر في تلك القائمة هو حرف من سلسلتي الإدخال لديك، مسبوقة بواحدة منهما

  • " " (مسافتان)، الحرف موجود في هذا الموضع في كلا السلسلتين
  • "- " (مسافة الشرطة)، الحرف الموجود في هذا الموضع في السلسلة الأولى
  • "+ " (زائد مسافة)، الحرف الموجود في هذا الموضع في السلسلة الثانية.

كرر هذه القائمة ويمكنك إنشاء المخرجات التي تتطلع إلى إنشائها بالضبط.

لا يوجد ذكر لكون difflib عفا عليه الزمن أو تم إهماله بأي شكل من الأشكال في مستندات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top