2017-01-04 1 views
1

は、私は次の文字列があります。これらの文字列をPythonでどのように比較するのですか?

1679.2235398,-1555.40390834,-1140.07728186,-1999.85500108 

を、私は、画像に保存するステガノグラフィ技術を使用しています。今すぐイメージから取り戻すと、完全な形で戻ってくることがありますが、問題はありません。他の場面では、取得したデータは、完全に、その結​​果何か(による画像上で発生している修正/変更に)取得されていない場合は次のようになります。

1679.2235398,-1555.I8\xf3\x1cj~\x9bc\x13\xac\x9e8I>[a\xfdV#\x1c\xe1\xea\xa0\x8ah\x02\xed\xd1\x1c\x84\x96\xe2\xfbk*8'l 

お知らせ、それだけで「1679.2235398、-1555 "残りの部分は変更が行われた場所です。 ここで、どのくらい正常に取得したのかをパーセントで計算するにはどうすればよいですか? 長さが同じではないので、文字比較ではできません。元のデータの長さに合わせるために、変更したデータをスライスしたり、別の形式に変換する必要があるようです。

ヒント?

+1

出力に表示されている元の文字列の割合を使用することはできませんか? – JETM

+0

あなたが何を意味しているか分かりませんが、私が欲しいのは次のようなものです:1 = 1、6 = 6、などです。 – amsr

答えて

0

これは多くの場合、問題のコンテキストに依存しますが、いくつかのオプションがあります。

結果が常にそのように見える場合は、longest common subsequenceを見つけて元の文字列の長さでパーセンテージで除算します。

Levenshtein distanceは、1つの文字列を別の文字列に変更するために必要な文字数として、文字列を比較する一般的な方法です。 This questionには、これをパーセンテージに変換する方法についていくつかの回答があります。

文字列が常に同じ順序で出てくるとは思わない場合は、this answerはDNA作業に使用されるアルゴリズムを示しています。

+0

非常に興味深い方法。私は両方を試してみて、どのように結果が見えるか見てみましょう。ありがとうJERM – amsr

0

まあ、それは本当に依存して...私のソリューションは、このようなものになるだろう:私はすべての可能な最長の文字列で始まると、彼らはそのループの内側になり、新しい文字列 if original_string in new_string: 'something happens here'. であるかどうかを確認でしょう

wldは元の文字列のサイズを減らし、すべての組み合わせを可能にします。次の文字はN-1となり、2つの可能な組み合わせ(最初の数字または最後の数字を切り捨てる)などがあり、特定のしきい値に達するか、1長い文字列になるまで続きます。
ループは、あなたが見つけた最も長い文字列をif条件の中のログに格納することができ、その後は結果だけをチェックすることができます。助けてくれることを望む。

+0

これは、これに取り組むための良いアプローチだと思われる。多くのおかげで私はそれをテストします。 – amsr

関連する問題