파이썬 difflib 사용

오늘은 리스트에 있는 내용 중에서 지정된 내용과 최대한 유사한 내용을 만들어서 완성 후 몇 분 정도 시간을 두고 녹음을 해보았습니다.

difflib의 역할

두 파일의 차이점을 비교합니다.

그것을 사용할 때 difflib를 직접 가져 오십시오.

get_close_matches 함수

가장 유사한 콘텐츠를 일치시켜 결과를 반환합니다.

list1 = ["abc", "acd", "adf", "bcd", "buff"]
str1 = "abc"
result = difflib.get_close_matches(str1, list1)
print(result)

인쇄 결과:

['abc', 'bcd', 'acd']

difflib에는 다음과 같은 몇 가지 다른 기능이 있습니다.

 context_diff의 역할

반환이 목록이고 내용을 볼 수 없기 때문에 다음은 문자열로 변환됩니다.

import difflib

text1 = "abc"
text2 = "bcde"

res1 = difflib.context_diff(text1, text2)
print("".join(res1))

인쇄 결과

 ndiff의 역할

두 파일의 차이점을 반환합니다.

import difflib

text1 = "abc"
text2 = "bcde"

res1 = difflib.ndiff(text1, text2)
print("".join(res1))

 - 와 + 가 약간 헷갈린다는 것을 알 수 있습니다. 당황하지 마세요. 기능은 다음과 같습니다.

상징 의미
'-' 첫 번째 시리즈 행에는 포함되지만 두 번째 행에는 포함되지 않습니다.
'+' 두 번째 시리즈 행에는 포함되지만 첫 번째 행에는 포함되지 않습니다.
' ' 두 시리즈 라인이 일치합니다.
'?' 점진적인 차이가 있습니다.
'^' 다양한 캐릭터가 있습니다.

이를 비교하면 -a는 text1에는 있지만 text2에는 없다는 의미이고, +d, +e는 text2에는 있지만 text1에는 없다는 의미임을 알 수 있습니다.

ndiff와 difflib의 비교 기능은 동일합니다.

 difflib.Differ()의 비교 방법에 대해 이야기해 봅시다.

difflib의 Differ 사용

import difflib

text1 = "abc"
text2 = "bcde"

res1 = difflib.ndiff(text1, text2)
print("".join(res1))

d = difflib.Differ()
result = d.compare(text1, text2)
print("".join(result))

인쇄 결과

 difflib의 HtmlDiff 메서드

import difflib

text1 = "abc"
text2 = "bcde"

res1 = difflib.ndiff(text1, text2)
print("".join(res1))
# Differ 比较差异
d = difflib.Differ()
result = d.compare(text1, text2)
print("".join(result))
# HtmlDiff 统计差异
d1 = difflib.HtmlDiff()
res2 = d1.make_file(text1, text2)
# 把比对结果写入到html中
with open("diff.html", "w") as f:
    f.write(res2)

코드와 동일한 디렉토리에서 diff.html을 찾아 브라우저 코드를 사용하십시오.

 차이점을 확실히 알 수 있습니다

difflib의 SequenceMatcher 메서드

import difflib

text1 = "abc"
text2 = "bcde"

res1 = difflib.ndiff(text1, text2)
print("".join(res1))
# Differ 比较差异
d = difflib.Differ()
result = d.compare(text1, text2)
print("".join(result))
# HtmlDiff 统计差异
d1 = difflib.HtmlDiff()
res2 = d1.make_file(text1, text2)
# 把比对结果写入到html中
with open("diff.html", "w") as f:
    f.write(res2)
# 2个文件的相似对
res3 = difflib.SequenceMatcher(None, text1, text2).quick_ratio()
print(res3)

인쇄 결과

 

추천

출처blog.csdn.net/qq_33210042/article/details/131007868