問題タブ [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.

0 投票する
1 に答える
3660 参照

python - difflib.HtmlDiffクラスの使用-単一文字の表示

私はdifflib.HtmlDiffクラスを使用しており、2セットのテキスト(WebサイトからのHTML)を使用して関数を呼び出していますが、テーブルを作成するとき

ただし、これは文字ごとに比較しているように見え(テーブル行ごとに1文字)、100kしかない2セットのhtmlの4.3MBtxtファイルになります。

docファイルには次のように書かれています。

しかし、そうではないようです。

助言がありますか?

0 投票する
2 に答える
82385 参照

python - Python での高性能ファジー文字列比較、Levenshtein または difflib を使用

私は臨床メッセージの正規化 (スペル チェック) を行っており、与えられた各単語を 900,000 語の医学辞書と照らし合わせてチェックしています。時間の複雑さ/パフォーマンスについてもっと心配しています。

あいまい文字列比較を行いたいのですが、どのライブラリを使用すればよいかわかりません。

オプション1:

オプション 2:

この例では、どちらも同じ答えを返します。この場合、どちらも同じように機能すると思いますか?

0 投票する
3 に答える
1029 参照

python - 正規表現を使用した Python difflib

difflib で正規表現を使用できますか?

具体的には、次のことを行います。

実際は次のとおりです。

そして金は:

0 投票する
1 に答える
1147 参照

python - Python の HtmlDiff.make_table() の最悪の動作

Python 2.7 のdifflib.HtmlDiff.make_table()関数を使用して、内部テスト ケース ランナーの予想されるファイルと実際のファイルの差分を生成しています。それらは最終的に HTML テスト レポートになります。

これまでのところ、これは問題なく機能しています。より大きなファイル (〜 400 KiB) を含むテスト ケースを追加するまでは、多くの場合、改行が含まれていませんでした。ほとんどすべてのテスト ケースは 2 秒未満で実行され、さらに複雑なものは 4 秒もかかります。この新しいものは、通過するときは同じくらい速いですが、失敗するまでに 13 分 (!) かかります。そのすべての時間は、レポートの生成に費やされます。それがどのように問題であるかを理解していただければ幸いです。

これを実証する試み(おそらく最善の方法ではないことはわかっています):

そして結果:


difflib.ndiff()make_table()私が理解している限り、これは内部で使用されています)この問題はないようです:

私にこれを与えます:

これは非常に合理的に見えます。つまり、比例しています。サイズが 4 倍になると、4 倍の時間がかかります。


ここからどこへ行くべきかわからない。違いがある場合、HTML ジェネレーターは多くのバックトラックを行うと思います (ただし、 ndiff() で既に処理されていると思われるかもしれません)。以前に中止し、あきらめて、セクション全体を「別」としてマークするように指示できますか?

差分を生成するためのさまざまなアルゴリズムがたくさんあることを理解しています。この場合、非常に詳細な分析を行い、あらゆる場所で再同期を試みる必要はありません。ファイル上のどの位置が異なるかを大まかに教えてから、妥当な時間枠で終了する必要があります。

あるいは、この最悪の問題を抱えていない HTML 生成 Python diff ライブラリは他にありますか?

0 投票する
2 に答える
804 参照

python - Python difflib gnu パッチの互換性

GNU patch と互換性のある python モジュール difflib でパッチを作成することはできますか? Unified_diff と context_diff を使用しようとし、lineterm を "\n" として指定しようとしましたが、まだこのエラーが発生します:

file.writelines(diff) を使用してパッチをファイルに書き込みました (コードhttp://pastebin.com/3HAWfwVf )

ファイル test.txt:

ファイル test2.txt:

そして生成されたパッチ:

助けてくれてありがとう。

0 投票する
1 に答える
1440 参照

python - difflibshtml出力で1行に2文字以上を強調表示する方法

私はdifflib.HtmlDiff2つのファイルを比較するために使用しています。出力されたhtmlで違いを強調したい。

これは、1行に最大2つの異なる文字がある場合にすでに機能します。

ただし、1行にさらに異なる文字がある場合、出力では行全体が赤(左側)または緑(表の右側)でマークされます。

この動作は構成可能ですか?それで、行が削除/追加としてマークされる異なる文字の数を設定できますか?

編集:

例:

私にこの出力を与えます:

出力

2行目は私が欲しい出力です。黄色の違いを強調しています。3行目は、1文字の変更を検出せず、代わりに削除/追加として表示するため、私には奇妙です。4行目は3行目と同じですが、行全体がマークされています。

0 投票する
2 に答える
2144 参照

python - difflibは、シーケンスの順序に応じて異なる比率を返します

これら2つが異なる比率を返す理由を誰かが知っていますか。

0 投票する
1 に答える
3304 参照

python - Pythonで、2つの単純な文字列の違いを強調するHTMLを生成します

異なるサブ文字列をHTMLスパン属性で囲んで、Pythonを使用した2つの単純な文字列の違いを強調する必要があります。したがって、次の例で示す関数を実装する簡単な方法を探しています。

hightlight_diff('Hello world','HeXXo world','red')

...文字列を返す必要があります:

'He<span style="color:red">XX</span>o world'

私はグーグルでdifflibが言及されているのを見ましたが、それは時代遅れであると思われ、良い簡単なデモは見つかりませんでした。

0 投票する
2 に答える
3033 参照

python - difflibのSequenceMatcherに「ジャンク」文字を無視させる

類似性のために一致させたい文字列がたくさんあります(各文字列は平均30文字です)。difflib's SequenceMatcherシンプルで結果が良かったので、このタスクには最適でした。しかし、私がこれを比較hellboyしてhell-boy好きなら

私はそのような言葉が100パーセント一致することを望みますratio of 1.0。上記の関数で指定されたジャンク文字は比較には使用されませんが、最も長い連続した一致するサブシーケンスを見つけるために使用されることを理解しています。比較のためにいくつかの「ジャンク」文字を無視する方法はありSequenceMatcherますか?

0 投票する
3 に答える
11514 参照

python - Pythonのdifflib.get_close_matches()関数はどのように機能しますか?

以下は2つのアレイです。

出力:

に最も'198.124.252.102'近いものであってはなり'198.124.252.101'ませんか?

いくつかの浮動型の重みについて指定されているドキュメントを調べましたが、アルゴリズムの使用に関する情報はありません。

最後の2つのオクテットの絶対差が1であるかどうかを確認する必要があります(最初の3つのオクテットが同じである場合)。

したがって、最初に最も近い文字列を見つけてから、その最も近い文字列で上記の条件を確認しています。

これを達成するための他の機能または方法はありますか?また、どのようにget_close_matches()動作しますか?

ipaddripsに対してそのような操作は行われていないようです。