2011-07-01 12 views
2

私はHTML Webページに一連のキーワードを持っています。それらはコンマで区切られているので、CSVファイルにすることができます.HTML Webページとして表示される別のCSVファイルではないことを知りたいと思います。 どうやって比較しますか?私はmysqlとテーブルのアイデアを持っていますが、これはCSVまたはhtmlソースです。 ありがとう!ページまたはCSVファイルのキーワードを比較する:PHP?バッシュ?

+0

あなたは質問を少し明確にもらえますか? csvとcsvやhtmlを比較したいかどうかは分かりません。上記のデータの例を投稿できますか? – Itako

答えて

1

2つのcsvファイル、a.csvとb.csvを指定すると、このスクリプトはa.csv内のbが見つからないすべてのファイルを含む新しいファイルout.csvを作成します(または編集する) .csv。

import urllib 

url = 'http://www.website.com/x.csv' 
urllib.urlretrieve(url, 'b.csv') 


file_a = open('a.csv', 'r') 
file_b = open('b.csv', 'r')  
file_out = open('out.csv', 'w') 

list_a = [x.strip() for x in file_a.read().split(',')] 
list_b = [x.strip() for x in file_b.read().split(',')]  
list_out = list(set(list_a) - set(list_b)) # Reverse if necessary 

file_out.write(','.join(list_out)) 
file_out.close() 
+0

興味深いですね。 2番目のCSVは別のサイトで更新されるため、絶対URLから呼び出すことのできる方法はありますか?私はすでにローカルで1番目のcsvファイルを持っており、変更されません。 – Denis

+0

絶対URLで試してみます:) – Denis

+0

最初に他のサイトのcsvファイルをダウンロードするように更新しました。 – msrxthr

1

単なるキーワードリストの場合は、検索と置換(sedを使用することができます)を行い、すべてのカンマを改行で置き換えます。したがって、各行に1つのキーワードを含むファイルが作成されます。これを両方のバージョンのリストに行います。

join -v 1 leftfile rightfile 

これで、rightfileにないすべてのエントリがleftfileにレポートされます。最初にファイルをソートすることを忘れないでください。そうしないと、結合が機能しません。ソートのためのbashツールもあります(これは驚くことではなく「ソート」と呼ばれています)。

1

PHPソリューション.. は、文字列としてのキーワードを取得配列に、次に変換しarray_diff機能を使用します?

<?php 
$csv1 = 'a1, a2, a3, a4'; 
$csv2 = 'a1, a4'; 

$csv1_arr = explode(',', $csv1); 
$csv2_arr = explode(',', $csv2); 

$diff = array_diff($csv1_arr, $csv2_arr); 
print_r($diff); 

>

関連する問題