python对比两个文件找出不同并显示_逐行比较两个不同的文件,并在第三个文件中写下差异 – Python...

我想比较两个文本文件,每个文件有三列.一个文件有999行,另一个有757行.我希望将不同的242行存储在不同的文件中.我使用随机网络生成器创建了第一个文件(999行)(999行是边,第三列是第一列,第二列之间的权重 – 源,目标节点).

文件格式 – 文件1,2

1 3 1

16 36 1

我试过了

既不适合我.

我认为这是字符串比较的问题.我想比较第一列和第二列中的数字.如果它们都不同,我想将它写入第三个文件.

任何帮助都感激不尽!

更新

我在@MK发表评论后发布了以下代码.

f = open("results.txt","w")

for line in file("100rwsnMore.txt"):

rwsncount += 1

line = line.split()

src = line[0]

dest = line[1]

for row in file("100rwsnDeleted.txt"):

row = row.split()

s = row[0]

d = row[1]

if(s != src and d != dest):

f.write(str(s))

f.write(' ')

f.write(str(d))

f.write('\n')

f.close()

最佳答案 如果你在* nix系统上,最好的通用选项就是使用:

sort filea fileb | uniq -u

但是如果你需要使用Python:

您的代码会在外部文件的每次迭代中重新打开内部文件.在循环外面打开它.

使用嵌套循环的效率低于存储找到的值的第一个循环,然后将第二个值与这些值进行比较.

def build_set(filename):

# A set stores a collection of unique items. Both adding items and searching for them

# are quick, so it's perfect for this application.

found = set()

with open(filename) as f:

for line in f:

# [:2] gives us the first two elements of the list.

# Tuples, unlike lists, cannot be changed, which is a requirement for anything

# being stored in a set.

found.add(tuple(sorted(line.split()[:2])))

return found

set_more = build_set('100rwsnMore.txt')

set_del = build_set('100rwsnDeleted.txt')

with open('results.txt', 'w') as out_file:

# Using with to open files ensures that they are properly closed, even if the code

# raises an exception.

for res in (set_more - set_del):

# The - computes the elements in set_more not in set_del.

out_file.write(" ".join(res) + "\n")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值