ord中两个文件之间的差异

2024-04-27 21:54:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将字符串行从文件2复制到文件1,如果该行在文件1中不存在。我用的是对称差分,但它给了我无序的结果。本例中的文件内容不是实际的。我的实际文件中没有数字,只有字符串,但我用数字来表示问题。我可能会给文件2添加数字,并将其按列表排序,但文件2随机地从其他程序获取信息,我不熟悉,也不想干涉。你知道吗

文件1的内容:

'1\n','2\n','3\n'

文件2的内容:

'1\n','2\n','3\n','4\n'`,'5\n','6\n','7\n','8\n','9\n','10\n'

每一行都是线

diff = set(file1).symmetric_difference(file2)

set(['8\n', '10\n', '9\n', '6\n', '7\n', '4\n', '5\n'])

我的目标是

set(['4\n', '5\n', '6\n', '7\n', '8\n', '9\n', '10\n'])


Tags: 文件字符串程序内容列表排序diff数字
3条回答

使用join()和split()

line1 = "'1\n','2\n','3\n'"
line2 = "'1\n','2\n','3\n','4\n'`,'5\n','6\n','7\n','8\n','9\n','10\n'"

''.join([i for i in line2.split(',') if i not in line1.split(',')])

如果您还没有嫁给python,那么使用commUnix可执行文件(如果您使用的是基于Unix的系统)就可以很容易地做到这一点:

$ comm -13 file1.txt file2.txt
4
5
6
7
8
9
10

这假设文件是预先排序的。你知道吗

你可以很容易地call this from Python。你知道吗

More info on how to use ^{}

您可以从通过对称差分获得的集合中执行此操作:

a_list = list(set_instance)
a_list.sort()

然后有一个排序的列表,可以附加到file1

相关问题 更多 >