Разница между двумя строками

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Простой скрипт для получения  различий между строк на
python, это полезно при создании тестов.
Существует стандартная библиотека difflib для этих целей, но я написал для неё более читаемый аналог.

Стандартный вариант

st1 = """/media/user/dd19b13d-bd85-46bb-8db9-5b8f6cf7a825/MyProject/PycharmProject/testfull_pack/venvs/bin/python/scratch_34.py"""
st2 = """/media/user/dd19b13d-bd85-46bb-8et9-5b8f6cf7a825/MyProject/PycharmProjects/testfull_pack/venvs/bin/python/scratch_34.py"""
rs = ''.join(list(difflib.unified_diff(st1, st2)))print(rs)

Ответ:

--- 
+++ 
@@ -30,8 +30,8 @@
 b - 8-d-b+e+t 9 - 5@@ -71,6 +71,7 @@
 e c t+s / t e

Мой скрипт

class colors:
    green = '\x1b[32m'
    reset = '\x1b[0m'
    red = '\x1b[31m'
    black = '\x1b[30m'
    yellow = '\x1b[33m'
    blue = '\x1b[34m'
    magenta = '\x1b[35m'
    cyan = '\x1b[36m'
    white = '\x1b[37m'
    bg_red = '\x1b[41m'
    bg_green = '\x1b[42m'


def diff_string(str1: str, str2: str):
    _max = max([len(str1), len(str2)])

    _len_str1 = len(str1)
    _len_str2 = len(str2)
    _res1 = ''
    _res2 = ''

    for _symbol in range(_max):

        if _symbol < _len_str1 and _symbol < _len_str2:
            if str1[_symbol] == str2[_symbol]:
                _res1 += '{1}{0}{2}'.format(str1[_symbol], colors.green, colors.reset)
                _res2 += '{1}{0}{2}'.format(str2[_symbol], colors.green, colors.reset)
            else:
                _res1 += '{1}{0}{2}'.format(str1[_symbol], colors.red, colors.reset)
                _res2 += '{1}{0}{2}'.format(str2[_symbol], colors.red, colors.reset)
                continue

        elif _symbol < _len_str1:
            _res1 += '{1}{0}{2}'.format(str1[_symbol], colors.bg_green, colors.reset)
            _res2 += '{1}{0}{2}'.format(' ', colors.bg_red, colors.reset)
        elif _symbol < _len_str2:
            _res1 += '{1}{0}{2}'.format(' ', colors.bg_red, colors.reset)
            _res2 += '{1}{0}{2}'.format(str2[_symbol], colors.bg_green, colors.reset)

        else:
            raise ValueError

    return _res1, _res2


if __name__ == '__main__':
    st1 = """/media/user/dd19b13d-bd85-46bb-8db9-5b8f6cf7a825/MyProject/PycharmProject/testfull_pack/venvs/bin/python/scratch_34.py"""
    st2 = """/media/user/dd19b13d-bd85-46bb-8et9-5b8f6cf7a825/MyProject/PycharmProjects/testfull_pack/venvs/bin/python/scratch_34.py"""

    # Пример 1
    rst1, rst2 = diff_string(st1, st2)
    print(f'str1:::\n{rst1}')
    print(f'str2:::\n{rst2}')

Ответ:

Источник: https://habr.com/ru/post/657609/


Интересные статьи

Интересные статьи

Маркетплейс – это сервис от 1С-Битрикс, который позволяет разработчикам делиться своими решениями с широкой аудиторией, состоящей из клиентов и других разработчиков.
Привет, Хабр. На днях Siemargl предложил мне перевести любопытную статью о победе над юниксовым wc при помощи хаскеля. Переводить её я, конечно же, не буду, и по нескольким причинам: автор вы...
Существует традиция, долго и дорого разрабатывать интернет-магазин. :-) Лакировать все детали, придумывать, внедрять и полировать «фишечки» и делать это все до открытия магазина.
Высказать то, что слова не могут передать; почувствовать самые разнообразные эмоции, переплетающиеся в ураган чувств; оторваться от земли, неба и даже самой Вселенной, отправившись в путешест...
Здравствуйте. Я уже давно не пишу на php, но то и дело натыкаюсь на интернет-магазины на системе управления сайтами Битрикс. И я вспоминаю о своих исследованиях. Битрикс не любят примерно так,...