問題タブ [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 に答える
94 参照

python - 10行の文字列から等しいシーケンスを見つける.

文字列行を含むテキスト ファイルから最長の共通シーケンスを見つけようとしています。出力は、例のように行を揃えたテキスト ファイルでもある必要があります。

シーケンスを見つける - efghijk

出力ファイル:

difflib を使用し、行をリストに保存して list[0] と list[1] を比較し、この 2 つの文字列から最長のシーケンスを見つけてから difflib(None, sequence, list[2]) などを使用することを考えています。

しかし、これをコーディングするのに問題があり、出力ファイルを作成する方法がまったくわかりません。

アドバイスありがとう、ジャン

0 投票する
0 に答える
428 参照

python - difflib のスピードヘルパー

私はSequenceMatcherこのタスクに difflib ( ) を使用しています: タイプミスのある 3000 冊の本のタイトルについて、128500 冊のタイトルを含むデータベースで最も近い一致を見つけます。コードは簡単です:

動作しますが、遅いです。約 100 時間後、3000 のリストの約 40% になります。問題はもちろん、128500 タイトルの 3000 回の反復 = 3 億 8550 万回の呼び出しSequenceMatcherです。

これを最適化する方法を探しています。この投稿では、OP はインデックスを作成し、それを照会し、SequenceMatched はそのクエリの歩留まりを一致させました。それは良いアプローチだと思いますが、それをどのように実装しますか?

スクリプトは 1 回限りのものであり、派手なアプリなどではありません。私の時間の予算は限られています。

edit Whoosh はあいまい用語クエリをサポートしています。SQLite にはLIKE.

私が調べるべき他の可能性はありますか?

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

python - 両方の「ファイル」からの行番号を使用したPython統合差分

コンテキスト行のみを表示する行番号で統一された差分を作成する方法を見つけようとしていNます。でこれを行うことができませんでしたdifflib.unified_diff。両方のファイルの変更を表示する必要があります。

私ができる最も近いdiffのは、コマンドラインで次のように使用することです。

/usr/bin/diff --unchanged-line-format=' %.2dn %L' --old-line-format="-%.2dn %L" --new-line-format="+%.2dn %L" file1.py file2.py

Nしかし、コンテキストの行のみを表示したいのです/usr/bin/diffが、カスタム行形式のコンテキストをサポートしていないようです (たとえば、-U2 は --line-format " " と互換性がありません)conflicting output style options

以下は、私が達成したいことの例です(上記の差分と同じ出力ですが、変更を取り巻くコンテキストの1行のみを表示しています):

+01: def renamed_function() -01: def original_function(): 02: +03: """ Neat stuff here """ 04: 21: +22: # Here's a new comment 23: 85: # Output the value of foo() +86: print "Foo is %s"%(foo()) -86: print foo() 87:

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

python - TypeError: タイプ 'float' のオブジェクトには len() 、difflib がありません

辞書のキーの値を利用する関数があります。値はリストであり、そのリストを繰り返し処理してサンプル文字列と比較します。

distanceは、4 つの float 値 l1、l2、l3、l4 の入力に対して float 値を返す関数です。それは問題ではありません。問題はdifflib.SequenceMatcher(None, str1, item).ratio().

エラーは次のとおりです。

Str1 は string であり、それを と比較しitemます。itemは文字列のリストであることに注意してください。docs に従って、difflib 引数はハッシュ可能である必要がありitem、一意のハッシュ値はありません。どうすればこれを回避できますか??

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

python - メソッド set_seq1 および set_seq2 の動作、difflib python

difflib のドキュメントを確認しましたが、difflib.SequenceMatcher.ratio()実際の動作について混乱しています。このことを考慮 :

私はs = 0.9411764705882353
それがどのように正確に計算されるか知りたいと思っていました. 2つの文字列は、1つの文字列と他の文字列の偏差を実際に調べることで比較されます。2つの文字列abの場合、ドキュメントは次のように述べて います。

差分は、「'a' を 'b' に変更するために何をする必要があるか?」として計算されます。

そして、次のようなものがあります:

b 内の x の場合、b2j[x] は x が現れる (b 内の) インデックスのリストです。ジャンク要素が出てこない

上記のs の例について説明してください。

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

python - difflibを使用してPythonで単語の辞書を検索するための効率的なデータ構造?

スペルチェッカーを作成しようとしていますが、difflib を使用して実装したいと考えていました。/usr/share/dict/words基本的に、dictionaryFile.pyというファイルに保存している標準の UNIX 辞書 ( ) に追加した技術用語のリストがあります。

stringSim.py という名前の別のスクリプトがあり、辞書をインポートしてそれに対してサンプル文字列をテストします。基本的なコードは次のとおりです。

以下を返します。

同様の一致を検索するために使用できるより良い戦略があるかどうか疑問に思っています (単語のスペルが間違っていると仮定します)。これは Web アプリケーション用であるため、コードのこの部分を最適化して、少しスマートにしようとしています。wordList 変数を構造化するより良い方法はありますか (現在は単なる単語のリストです)。

ありがとう。

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

python - SequenceMatcher 比率()

SequenceMatcher(...).ratio()2 つの文字列が類似しているかどうかを確認するために使用する予定でした。ただし、私の簡単なテストでは、予期していなかった結果が返されます (そして、それは私の目的では機能しません)。

同じ数の間違いがある長い文字列は、同じかそれよりも低い比率になるはずですよね?

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

python - Python データフレーム

データフレーム (df) があり、特定の行にデータを追加しようとしています

Index Fruit Rank 0 banana 1 1 apple 2 2 mango 3 3 Melon 4

目標は、ランク 1 のフルーツを各ランクと比較し、値を追加することです。difflib.SequenceMatcher を使用して比較しています。現在、df に追加できますが、各行に同じ値を追加することになります。ループと追加に苦労しています。どんなポインタでも大歓迎です。

これが私のコードの一部です:

結果は次のようになります。

Index Fruit Rank similarity_score 0 banana 1 0.3 1 apple 2 0.3 2 mango 3 0.3 3 Melon 4 0.3

望ましい結果は次のとおりです。

Index Fruit Rank similarity_score 0 banana 1 n/a 1 apple 2 0.4 2 mango 3 0.5 3 Melon 4 0.6

ありがとう。