python - python比较大文件中的行
问题描述
我需要比较两个 .csv 文件(文件超过 65000 行)。查找不在第二个文件中的行。我正在使用 difflib.ndiff:
for line in difflib.ndiff(text1, text2):
print(line,)
但我得到了意想不到的结果。该函数找到两个相同的字符串并将它们标记为不同:
+ Gr4,DQ_3Gb_1m_DR_926_23489,100,,,70,,
- Gr4,DQ_3Gb_1m_DR_926_23489,100,,,70,,
- 可能是什么问题呢?
- 什么可能是找到差异的合适方法?
2.
from itertools import izip_longest
l1 = map(lambda x: x.strip(), list(open('test1.txt')))
l2 = map(lambda x: x.strip(), list(open('test2.txt')))
diff_list = izip_longest(l1, l2)
for diff in diff_list:
print '%s %s %s' % (
diff[0] or '',
'==' if diff[0] == diff[1] else '!=',
diff[1] or '',
)
我尝试使用以下代码来比较文件,但我得到了同样的意外结果,为什么会这样?
Gr4,DQ_1Gb_1m_DR_926_23486,100,,,70,,!=Gr4,DQ_3Gb_1m_DR_926_23489,100,,,70,,
Gr4,DQ_3Gb_1m_DR_926_23489,100,,,70,,!=Gr4,DQ_1Gb_1m_DR_926_23486,100,,,70,,
解决方案
推荐阅读
- npm - npm peerDependency 版本冲突
- firebase - 如何在使用 Firebase 的 React Native (Expo) 应用程序中进行 Jest 测试?(“addEventListener 和 attachEvent 不可用”)
- excel - 手动输入与通过用户表单和文本框输入之间的区别
- azure - 无法在 Azure 数据工厂的数据集中查看列标题
- python - tkinter Python3在按钮单击后保留标签值,在下一个应用程序启动时
- java - 进入另一个活动时如何擦除活动的所有数据,但我也想重新启动该活动但没有任何以前的数据
- javascript - 如何在 Deno 中正确设置 HTTP 或 HTTPS 代理
- python - IndexError:列表索引超出范围/AttributeError:“列表”对象没有属性“get_attribute”
- python - 使用 tensorflow 数据集加载 pandas 数据框
- python - request.form.get 和 request.args.get 在烧瓶表单数据中不返回任何内容