#!/usr/bin/env python2.7
import vobject
abfile='/foo/bar/directory/file.vcf' #ab stands for address book
ablist = []
with open(abfile) as source_file:
for vcard in vobject.readComponents(source_file):
ablist.append(vcard)
print ablist[0]==ablist[1]
上記のコードは、Trueを返す必要がありますが、それは、vCardのは、たとえ異なると考えられているしていないため、彼ら同じだ。究極の目的の1つは、vcardファイルから重複を削除する方法を見つけることです。ボーナスポイント:は、比較、vCard連絡先重複を削除するには
set(ablist)
重複を削除するには、次のようなPythonでリストをuniqifyするために、高速のいずれかの方法を使用してとの比較は互換性を持たせるための方法はありますか? (例えば、何とかvCardを文字列に変換する...)。 LEN(セット(ablist))上記のコードで予想通り2としない1を返し...
対照的に、代わりに全体のvCardを比較し、我々は同様に、それの一つの成分を比較する場合:
print ablist[0].fn==ablist[1].fn
はその後、我々は(2つだけの同一のvCardで)ここで
は、テストで使用されるファイルの内容です...期待される動作を確認し、応答として真の受信ん:私はfollowiを発見したBEGIN:VCARD
VERSION:3.0
FN:Foo_bar1
N:;Foo_bar1;;;
EMAIL;TYPE=INTERNET:[email protected]
END:VCARD
BEGIN:VCARD
VERSION:3.0
FN:Foo_bar1
N:;Foo_bar1;;;
EMAIL;TYPE=INTERNET:[email protected]
END:VCARD
ご意見ありがとうございました。私はどのようにすべてのコンポーネントにアクセスできるのか分かりませんが、簡単な方法はありますか?たとえば、私はメモフィールドにアクセスする方法がわかりません。私は重複をチェックするためのコードを開発していますが、それは良い仕事をしますが、あなたが言うように、いくつかは間違っています...もし私がすべてのコンポーネントにアクセスできるなら、電子メールや名前のようなフィールドが同じ場合は合併を提案することもできます。 ..どんな助けが最も歓迎されるだろう... –