이 문서에서는 특정 참조 값이 있는 Python difflib 모듈의 예를 주로 소개합니다. 관심 있는 친구는 시퀀스의 차등 비교를 위해
difflib 모듈에서 제공하는 클래스와 메서드를 참조할 수 있습니다. 텍스트 또는 HTML 형식의 차이점 비교 페이지 디렉터리를 비교해야 하는 경우 filecmp 모듈을 사용할 수 있습니다.
class difflib.SequenceMatcher
이 클래스는 임의의 해시 가능 유형의 시퀀스 쌍을 비교하는 방법을 제공합니다. 이 방법은 '쓰레기' 요소를 포함하지 않는 가장 큰 연속 일치 시퀀스를 찾습니다.
알고리즘의 복잡도를 비교해 보면 원래의 게슈탈트 매칭 알고리즘으로 인해 최악의 경우 n제곱 연산을 하고, 최상의 경우에는 선형 효율성을 가집니다.
조각의 1% 이상 반복되거나 200회 반복되는 문자를 가비지로 처리할 수 있는 자동 가비지 휴리스틱 기능이 있습니다. 이 기능은 autojunk를 false로 설정하여 끌 수 있습니다.
class difflib.Differ
이 클래스는 텍스트 줄의 차이를 비교하여 사람이 읽기에 적합한 차이 결과 또는 증분 결과를 생성합니다. 결과의 각 부분에 대한 표현은 다음과 같습니다.
class difflib.HtmlDiff
이 클래스는 비교 결과를 양쪽에 표시하거나 행별로 표시하는 HTML 테이블(또는 테이블이 포함된 HTML 파일)을 만드는 데 사용할 수 있습니다.
make_file(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])
make_table(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])
위의 두 가지 방법 모두 비교 결과가 포함된 테이블이 포함된 html 파일을 생성하는 데 사용할 수 있으며 내용의 일부가 강조 표시됩니다.
difflib.context_diff(a, b[, fromfile][, tofile][, fromfiledate][, tofiledate][, n][, lineterm])
a와 b(문자열 목록)를 비교하고 A 생성기를 반환합니다. 텍스트 줄 비교용
예:
>>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n'] >>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n'] >>> for line in context_diff(s1, s2, fromfile='before.py', tofile='after.py'): ... sys.stdout.write(line) *** before.py --- after.py *************** *** 1,4 **** ! bacon ! eggs ! ham guido --- 1,4 ---- ! python ! eggy ! hamster guido
difflib.get_close_matches(word, 가능성[, n][, cutoff])
최대 일치 결과 목록을 반환합니다
예:
>>> get_close_matches('appel', ['ape', 'apple', 'peach', 'puppy']) ['apple', 'ape'] >>> import keyword >>> get_close_matches('wheel', keyword.kwlist) ['while'] >>> get_close_matches('apple', keyword.kwlist) [] >>> get_close_matches('accept', keyword.kwlist) ['except']
difflib.ndiff(a, b[, linejunk][, charjunk])
a와 b(문자열 목록)를 비교하고 Differ 스타일 차이 결과를 반환합니다.
예:
>>> diff = ndiff('one\ntwo\nthree\n'.splitlines(1), ... 'ore\ntree\nemu\n'.splitlines(1)) >>> print ''.join(diff), - one ? ^ + ore ? ^ - two - three ? - + tree + emu
difflib. 복원(시퀀스, which)
두 개의 정렬된 시퀀스로 생성된 결과를 반환합니다. ][, n][, lineterm])
a와 b(문자열 목록)를 비교하고 통합 diff 형식으로 차이 결과를 반환합니다.
예:
>>> diff = ndiff('one\ntwo\nthree\n'.splitlines(1), ... 'ore\ntree\nemu\n'.splitlines(1)) >>> diff = list(diff) # materialize the generated delta into a list >>> print ''.join(restore(diff, 1)), one two three >>> print ''.join(restore(diff, 2)), ore tree emu실제 적용 예
두 파일 비교 , 그리고 차이 결과를 보여주는 HTML 파일을 생성합니다
>>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n'] >>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n'] >>> for line in unified_diff(s1, s2, fromfile='before.py', tofile='after.py'): ... sys.stdout.write(line) --- before.py +++ after.py @@ -1,4 +1,4 @@ -bacon -eggs -ham +python +eggy +hamster guido
위 내용은 Python difflib 모듈에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!