問題タブ [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 - 10行の文字列から等しいシーケンスを見つける.
文字列行を含むテキスト ファイルから最長の共通シーケンスを見つけようとしています。出力は、例のように行を揃えたテキスト ファイルでもある必要があります。
シーケンスを見つける - efghijk
出力ファイル:
difflib を使用し、行をリストに保存して list[0] と list[1] を比較し、この 2 つの文字列から最長のシーケンスを見つけてから difflib(None, sequence, list[2]) などを使用することを考えています。
しかし、これをコーディングするのに問題があり、出力ファイルを作成する方法がまったくわかりません。
アドバイスありがとう、ジャン
python - difflib のスピードヘルパー
私はSequenceMatcher
このタスクに difflib ( ) を使用しています: タイプミスのある 3000 冊の本のタイトルについて、128500 冊のタイトルを含むデータベースで最も近い一致を見つけます。コードは簡単です:
動作しますが、遅いです。約 100 時間後、3000 のリストの約 40% になります。問題はもちろん、128500 タイトルの 3000 回の反復 = 3 億 8550 万回の呼び出しSequenceMatcher
です。
これを最適化する方法を探しています。この投稿では、OP はインデックスを作成し、それを照会し、SequenceMatched はそのクエリの歩留まりを一致させました。それは良いアプローチだと思いますが、それをどのように実装しますか?
スクリプトは 1 回限りのものであり、派手なアプリなどではありません。私の時間の予算は限られています。
edit Whoosh はあいまい用語クエリをサポートしています。SQLite にはLIKE
.
私が調べるべき他の可能性はありますか?
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:
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
、一意のハッシュ値はありません。どうすればこれを回避できますか??
python - メソッド set_seq1 および set_seq2 の動作、difflib python
difflib のドキュメントを確認しましたが、difflib.SequenceMatcher.ratio()
実際の動作について混乱しています。このことを考慮 :
私はs = 0.9411764705882353
それがどのように正確に計算されるか知りたいと思っていました. 2つの文字列は、1つの文字列と他の文字列の偏差を実際に調べることで比較されます。2つの文字列aとbの場合、ドキュメントは次のように述べて います。
差分は、「'a' を 'b' に変更するために何をする必要があるか?」として計算されます。
そして、次のようなものがあります:
b 内の x の場合、b2j[x] は x が現れる (b 内の) インデックスのリストです。ジャンク要素が出てこない
上記のs の例について説明してください。
python - difflibを使用してPythonで単語の辞書を検索するための効率的なデータ構造?
スペルチェッカーを作成しようとしていますが、difflib を使用して実装したいと考えていました。/usr/share/dict/words
基本的に、dictionaryFile.pyというファイルに保存している標準の UNIX 辞書 ( ) に追加した技術用語のリストがあります。
stringSim.py という名前の別のスクリプトがあり、辞書をインポートしてそれに対してサンプル文字列をテストします。基本的なコードは次のとおりです。
以下を返します。
同様の一致を検索するために使用できるより良い戦略があるかどうか疑問に思っています (単語のスペルが間違っていると仮定します)。これは Web アプリケーション用であるため、コードのこの部分を最適化して、少しスマートにしようとしています。wordList 変数を構造化するより良い方法はありますか (現在は単なる単語のリストです)。
ありがとう。
python - SequenceMatcher 比率()
SequenceMatcher(...).ratio()
2 つの文字列が類似しているかどうかを確認するために使用する予定でした。ただし、私の簡単なテストでは、予期していなかった結果が返されます (そして、それは私の目的では機能しません)。
同じ数の間違いがある長い文字列は、同じかそれよりも低い比率になるはずですよね?
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
ありがとう。