問題タブ [difflib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Difflib SequenceMatcher - 複数の文字の類似性について「等しい」と判断する方法は?
2 つの HTML ソース コードを比較する Python モジュールを作成しました。テキストを比較するのに少し問題があります-difflib.SequenceMatcher
関数は、類似している場合に1文字だけであっても、テキストを「等しい」と判断します。そのため、「123456」や「abc1de」などの生成された値は、挿入された「abc」として分類され、1=1 に等しく、de で 23456 に置き換えられます。
結論として、等しい長さが 3 文字を超える場合にのみ「等しい」分類が設定されることをどのように判断できますか?
python - HTML と difflib の比較
このページのコンテンツのみの信頼できる差分を取得しようとしています(構造の変更はまれであるため、無視できます) 。より具体的には、私がピックアップする必要がある唯一の変更は、追加された新しい命令 ID です。
difflibが何を生成するかを把握するために、まず 2 つの同一のHTML コンテンツを比較します。何も返されないことを期待しています。
difflibは UNIX ユーティリティを模倣しているため、何も含まれていないdiff
ことが予想diffed
されます (または、シーケンスが同一であることを示しますが、それでも、HTM L に似たものが'\n'.join
diffed
得られます (ただし、ブラウザーではレンダリングされません))。
実際、2 つの文字を比較する最も単純なケースを考えてみると、次のようになります。
diffed
= d.compare('a', 'a')
diffed.next()
以下を生成します。
だから私はdifflibから何かを提供できない、または提供しないことを期待しています(そして私はタックを変更する必要があります)、またはそれを誤用していますか? HTML を比較するための実行可能な代替手段は何ですか?
python - difflib からより詳細な差分を取得する (または、差分を後処理して同じことを達成する方法)
このページをダウンロードしてマイナーな編集を行い、この段落の最初の65を68に変更します。
次に、両方のソースをBeauifulSoupで解析し、それらをdifflibで比較します。
変更を印刷すると、次のようになります。
したがって、非常に小さな変更にもかかわらず、段落全体を印刷しています。文ごとではなくパラグラフごとに差分を表示するのは良いことだと思いますが、どうにかして出力をより細かくすることはできますか? 現状では、変更されたテキストだけを強調表示したい場合は、これら 2 つのほぼ同一の文字列のデルタ比較を追加で行う必要があるようです。