【发布时间】:2015-09-16 20:50:54
【问题描述】:
我有两个 txt 文件,分别有 50000 和 25000 个数据来比较两个文件中的数据,但只比较第一行并将其添加到列表 res1 中,(打印只是为了了解它是如何工作的) 当我运行代码时,它会打印元组(如预期的那样),但随后只打印 lineCue 中的值并避免第二个循环,列表结果只是 lineCue 采用的第一个值,而不是两个文件中重复的所有值.什么时候 我用另一种方式尝试了列表内容有24808次重复...... :(
contratos = 'C:\\CONTRATOS.txt'
cuentas = 'C:\\CUENTAS0.txt'
res1 = [[], []] # res1[0] -> ID, res1[1] -> NO ID
res2 = [] # res2 -> REPE
with open(cuentas, 'rb') as cue:
with open(contratos, 'rb') as con:
for lineCue in cue.xreadlines():
print(lineCue)
for lineCon in con.xreadlines():
print(lineCue, lineCon)
if lineCue == lineCon:
res1[0].append(lineCon)
print(res1[0])
输出:
['O199924\r\n']
文件: https://dl.dropboxusercontent.com/u/33113171/CONTRATOS.txt https://dl.dropboxusercontent.com/u/33113171/CUENTAS0.txt
【问题讨论】:
-
如果您确定没有任何重复,我建议您创建一个集合。您可以将每个文件存储在一个列表中,然后将该列表与
in进行比较。为了避免在比较行时\r\n`I recommend you to use.rstrip()` 出现问题,以防两个文件不一样
标签: list python-2.7 for-loop with-statement