You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python 3.7.5找出另一CSV文件中不存在的行

找出pr.csv中独有的行并统计数量

方法一:使用awk(保留原行顺序)

直接用awk一次性处理两个文件,无需提前排序,能保留pr.csv中原有的行顺序:

awk -F'|' 'NR==FNR { if(NR>1) lines[$0]; next } { if(!($0 in lines)) { if(FNR==1) print; else { print; count++ } } } END { print "\npr.csv has", count, "rows extra" }' ua.csv pr.csv

命令说明:

  • -F'|':指定字段分隔符为竖线
  • NR==FNR:处理第一个输入文件ua.csv时,将除表头外的所有行存入数组lines
  • 处理pr.csv时:
    • 先输出表头(FNR==1)
    • 若当前行不在lines数组中,就输出该行并累加计数
  • END块:最后输出额外行的统计结果

方法二:使用comm(需排序)

如果可以接受排序后的结果,用comm命令更简洁,步骤如下:

# 提取表头
head -1 pr.csv > header.tmp
# 排序两个文件的内容(排除表头)
tail -n +2 ua.csv | sort > ua_sorted.tmp
tail -n +2 pr.csv | sort > pr_sorted.tmp
# 获取pr.csv独有的行
comm -13 ua_sorted.tmp pr_sorted.tmp > extra_rows.tmp
# 统计行数
extra_count=$(wc -l < extra_rows.tmp)
# 输出结果
echo "pr.csv has $extra_count rows extra"
echo
cat header.tmp extra_rows.tmp
# 清理临时文件
rm header.tmp ua_sorted.tmp pr_sorted.tmp extra_rows.tmp

命令说明:

  • comm -13:只显示第二个文件(pr_sorted.tmp)独有的行,-1隐藏第一个文件独有的内容,-3隐藏两个文件共有的内容
  • 通过临时文件分别处理表头、排序内容,最后组合输出结果

预期输出

pr.csv has 2 rows extra

Name|Address|City|Country|Pincode
Smoet|coffee shop|finland|Europe|3453335
Jack|long street|malasiya|Asia|585858

内容的提问来源于stack exchange,提问作者Enigmaderockz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:15:38