【发布时间】:2015-02-12 23:05:42
【问题描述】:
我有一个比较的两个 CSV 文件,并且有这样的数据(我不确定这些是否称为列表或列表列表或其他内容):
来自文件 1:x =
['BDCA0', '01', '25', 'A']
['PPTR', '02', '14', 'A']
['ABCD1', '07', '14', 'A']
来自文件 2:y =
['ABCD1', '00', '4', 'A']
['BDCA0', '04', '25', 'A']
['PPTR', '02', '14', 'A']
我想比较这两个并打印差异但保持第一个元素不变。我想要的输出是:
['ABCD1', '07', '14', 'A']
['ABCD1', '00', '4', 'A']
['BDCA0', '01', '25', 'A']
['BDCA0', '04', '25', 'A']
我尝试做[a for a in x if a not in y] + [a for a in y if a not in x],但它给了我垃圾。
【问题讨论】:
-
行的顺序是否相同?
-
@Jan-PhilipGehrcke 不一定!
-
那么你需要先对行进行排序,或者第一列是从两个文件中匹配行的关键列?
-
这不是关键。我已经用它作为匹配的键,这些是结果列表。我现在只想要这些列表中的差异,将第一列保留在输出中。 @Marcin
-
这只是:
cat x y | sort | uniq?