Hoje, fiz um conteúdo o mais parecido possível com o conteúdo especificado do conteúdo da lista e dedico alguns minutos para gravá-lo após terminar
O papel do difflib
Compare as diferenças entre 2 arquivos.
Ao usá-lo, basta importar o difflib diretamente
função get_close_matches
Combine o conteúdo mais semelhante para retornar o resultado
list1 = ["abc", "acd", "adf", "bcd", "buff"]
str1 = "abc"
result = difflib.get_close_matches(str1, list1)
print(result)
resultado da impressão:
['abc', 'bcd', 'acd']
Existem algumas outras funções no difflib como segue
O papel de context_diff
Retorna uma linha de texto diferente, já que o retorno é uma lista e o conteúdo não pode ser visto, o seguinte é convertido em uma string
import difflib
text1 = "abc"
text2 = "bcde"
res1 = difflib.context_diff(text1, text2)
print("".join(res1))
imprimir resultado
O papel do ndiff
Retorna o ponto de diferença de 2 arquivos
import difflib
text1 = "abc"
text2 = "bcde"
res1 = difflib.ndiff(text1, text2)
print("".join(res1))
Pode ser visto que - e + sinta-se um pouco confuso, não entre em pânico, suas funções estão abaixo
símbolo | significado |
---|---|
'-' | Incluído na primeira linha da série, mas não na segunda. |
'+' | Incluído na segunda linha da série, mas não na primeira. |
'' | As duas linhas de série concordam. |
'?' | Existem diferenças incrementais. |
'^' | Existem personagens diferentes. |
Comparando isso, podemos entender que -a significa que existe em text1, mas não em text2, +d, +e significa que existe em text2, mas não em text1
A função de comparação de ndiff e difflib é a mesma
Vamos falar sobre o método compare de difflib.Differ()
Uso do Differ do difflib
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))
imprimir resultado
método HtmlDiff do difflib
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)
Encontre diff.html no mesmo diretório do código e use o código do navegador
Você pode ver claramente a diferença
método SequenceMatcher do difflib
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)
imprimir resultado