Python求两个文本文件以行为单位的交集、并集与差集的方法可以使用以下步骤:
1. 准备数据
首先,需要准备两个文本文件,假设它们的文件路径分别为file1.txt
和file2.txt
,并且每行内容是不同的字符串。
2. 读取文件内容
使用Python自带的文件读写函数open()
和readlines()
读取两个文本文件的内容,并将每行内容存储为一个列表。
with open('file1.txt', 'r') as f1:
file1_lines = f1.readlines()
with open('file2.txt', 'r') as f2:
file2_lines = f2.readlines()
3. 求并集
求两个列表的并集可以使用Python内置的set
数据类型,并转换为列表类型。
union = list(set(file1_lines) | set(file2_lines))
其中|
运算符表示并集,set()
将列表类型转换为集合类型,list()
将集合类型转换为列表类型。
4. 求交集
求两个列表的交集也可以使用set
数据类型和列表类型。
intersection = list(set(file1_lines) & set(file2_lines))
其中&
运算符表示交集。
5. 求差集
求两个列表的差集可以使用set
数据类型、-
运算符和列表类型。
difference = list(set(file1_lines) - set(file2_lines))
其中-
运算符表示差集。
示例
假设file1.txt
的内容如下:
apple
banana
orange
file2.txt
的内容如下:
cherry
apple
orange
pear
对这两个文件求交集、并集和差集,代码如下:
with open('file1.txt', 'r') as f1:
file1_lines = f1.readlines()
with open('file2.txt', 'r') as f2:
file2_lines = f2.readlines()
union = list(set(file1_lines) | set(file2_lines))
intersection = list(set(file1_lines) & set(file2_lines))
difference = list(set(file1_lines) - set(file2_lines))
print('Union: ', union)
print('Intersection: ', intersection)
print('Difference: ', difference)
运行结果如下:
Union: ['banana\n', 'pear\n', 'cherry\n', 'apple\n', 'orange\n']
Intersection: ['apple\n', 'orange\n']
Difference: ['banana\n']
另外,如果两个文件的内容存在重复行,可以先将重复行去重后再进行操作。如下示例,先对两个文件进行去重操作并保存为新的文件,然后对新文件进行操作:
def remove_duplicates(file_path):
"""
Remove duplicated lines in a file and save as a new file
"""
with open(file_path, 'r') as f:
lines = f.readlines()
unique_lines = set(lines)
with open('unique_' + file_path, 'w') as f:
f.writelines(unique_lines)
remove_duplicates('file1.txt')
remove_duplicates('file2.txt')
with open('unique_file1.txt', 'r') as f1:
file1_lines = f1.readlines()
with open('unique_file2.txt', 'r') as f2:
file2_lines = f2.readlines()
union = list(set(file1_lines) | set(file2_lines))
intersection = list(set(file1_lines) & set(file2_lines))
difference = list(set(file1_lines) - set(file2_lines))
print('Union: ', union)
print('Intersection: ', intersection)
print('Difference: ', difference)
这个示例中,定义了一个辅助函数remove_duplicates()
,用于去重并保存新文件。然后通过remove_duplicates()
函数对原始文件进行去重操作,得到新的文件名为unique_file1.txt
和unique_file2.txt
。最后,使用新文件进行操作。