比较页面或CSV文件中的关键字:PHP?猛击?

比较页面或CSV文件中的关键字:PHP?猛击?,php,python,bash,logic,Php,Python,Bash,Logic,我有一个HTML网页中的一系列关键字-它们是逗号分隔的,因此我可以将它们转换为CSV,并想知道哪些关键字不在另一个显示为HTML网页的CSV文件中。 你会怎么做比较?我有mysql和表的想法,但这是CSV或html源代码。 谢谢 如果它只是一个关键字列表,那么您需要执行搜索和替换(可以使用sed)来用回车替换所有逗号。因此,您将得到一个每行包含一个关键字的文件。对列表的两个版本都执行此操作。然后使用“join”命令: 这将报告leftfile中不在rightfile中的所有条目。别忘了先对文件进

我有一个HTML网页中的一系列关键字-它们是逗号分隔的,因此我可以将它们转换为CSV,并想知道哪些关键字不在另一个显示为HTML网页的CSV文件中。 你会怎么做比较?我有mysql和表的想法,但这是CSV或html源代码。
谢谢

如果它只是一个关键字列表,那么您需要执行搜索和替换(可以使用sed)来用回车替换所有逗号。因此,您将得到一个每行包含一个关键字的文件。对列表的两个版本都执行此操作。然后使用“join”命令:


这将报告leftfile中不在rightfile中的所有条目。别忘了先对文件进行排序,否则join将不起作用。还有一个用于排序的bash工具(毫不奇怪,它被称为“sort”)。

在Python中,给定2个csv文件,a.csv和b.csv,此脚本将创建(或编辑,如果已经存在)一个新文件out.csv,其中包含a.csv中未在b.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()
PHP解决方案。。 以字符串形式获取关键字,然后在数组中转换并使用数组_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);

你能澄清一下这个问题吗?您是否要将csv与csv或html进行比较,这听起来令人困惑。你能发布一些提到的数据的例子吗?看起来很有趣。当第二个CSV在另一个站点上更新时,有没有一种方法可以从绝对URL调用它?我在本地已经有了第一个csv文件,它不会更改。将尝试使用绝对URL,然后:)更新它以首先下载其他站点的csv文件。@mrt实际上您可以使用
list\u out=list(set(list\u b)-set(list\u a))
(从
list\u b
获取
list\u a
中不存在的项目)您将获得需要输出到文件中的列表。
<?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);