我有两个 csv 文件,它们的第一行是列的名称。
我想diff
他们的列名集,即找出
两个文件是否有相同的列名集(列的顺序无关紧要),以及
如果他们不这样做,一个文件中有什么列名而另一个文件中没有..
是否可以使用 awk
或 Linux 中的其他文本处理实用程序来做到这一点?
还是使用 Python 更好?
例如假设一个文件看起来像
col2,col1,col3
1,2,3
4,5,6
另一个文件看起来像
col3,col2,col4
2,3,4
5,6,7
那么在第一个文件中但在第二个文件中不存在的列名是col1
,在第二个文件中但不在第一个文件中的列名是col4
。
最佳答案
在 Python 中,首先使用 csv.reader
保存每个文件的标题行:
import csv
with open('one.csv', newline='') as f1, open('two.csv', newline='') as f2:
one = set(next(csv.reader(f1)))
two = set(next(csv.reader(f2)))
然后就可以使用set
操作了。
是否相同:
one == two
two
有但 one
没有的列:
two - one
one
有但 two
没有的列:
one - two
为了好玩,两个文件都有的列:
one & two
以及任一文件中的所有可用列:
one | two
关于python - 查找两个 csv 文件中列名之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34763396/