0 0

判断不同文本文件中是否有相同的行?3

3,5,7,10,6,             23,2     
4,7,45,2,1,             3,8,9
23,2                    67,90
45,7,8,           与     3,5,7,10,6
23,6,90                 23,89,90

上面是2个文本文件
请问分别读入一个或两个或者n个txt文件,全组合,分别判断每两个文件中是否有相同的行,如果有,则删去

谢谢






问题补充:
比方说就上面的那两个txt文件吧
除去包含的相同的行,最后输出
                          
4,7,45,2,1,             3,8,9 
45,7,8,           与     67,90
23,6,90                 23,89,90
问题补充:
能有详细代码可以具体实现吗
2009年1月06日 17:01

6个答案 按时间排序 按投票排序

0 0

将这些文本文件中的每一行读到map中,用key来区分不同的文件,map.put('f11',第一个文件中的第一行),map.put('f22',第二个文件中的第二行),然后对这个map做一些处理,删除值重复的key-value对,最后根据key读入不同的文件,其中有一个问题,如f11仍然存在,f12被删,这时f13应该是第一个文件中的第二行,所以往文件读数据的时候要稍微做一些处理,如先确定是f1,再按后面数字由小到大读入文件中。

2009年1月08日 10:55
0 0

按照bohemia (资深程序员)的做法, 我写了个程序:
a.txt内容为:
a
b
c
f
g

b.txt内容为:
a
e
b
d
c

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;

/**
 * 两个文件a.txt和b.txt, 去掉相同的行, 即交集
 * 
 * @author zhanjia
 *
 */
public class TestSet {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String file1 = "D:/a.txt";
		String file2 = "D:/b.txt";
		Set set1 = new HashSet();
		Set set11 = new HashSet();
		Set set2 = new HashSet();
		
		BufferedReader br1 = null;
		BufferedReader br2 = null;
		
		try {
			br1 = new BufferedReader(new InputStreamReader(new FileInputStream(file1)));
			br2 = new BufferedReader(new InputStreamReader(new FileInputStream(file2)));
			String line1 = null;
			String line2 = null;
			while ((line1 = br1.readLine()) != null) {
				set1.add(line1);
				set11.add(line1);
			}
			while ((line2 = br2.readLine()) != null) {
				set2.add(line2);
			}
			
			set11.retainAll(set2);
			System.out.println("交集: " + set11);
			
			set1.removeAll(set11);
			System.out.println("set1去掉交集: " + set1);
			set2.removeAll(set11);
			System.out.println("set2去掉交集: " + set2);
		} catch (Exception e) {
			try {
				br1.close();
				br2.close();
			} catch (Exception ce) {
			}
		}
		
	}

}


结果为:
交集: [a, c, b]
set1去掉交集: [f, g]
set2去掉交集: [d, e]

2009年1月07日 11:20
0 0

我说下, 以上这个问题在搜索算法中用的很多, 在小索引合并的时候。

2009年1月06日 21:36
0 0

如果Java
类似的操作:
1.读取2个文件到2个独立的Set;
2.Set求交集;(找到公共出现的行);
3.Set求差集;(过滤重复行);
end.

回答的不错, 我们继续强化下这个问题, 把这个问题, 扩展到 100W个小文件。 哈哈。 想个算法。 我目前能想到的是排序竞赛树。复杂度是 O(nlgn + n), 排序是nlgn, n 是竞赛树的复杂度。

2009年1月06日 21:35
0 0

如果是py:

file1;
file2;
s1 = set(file1.readlines());
s2 = set(file2.readlines());

print s1-(s1&s2);



如果Java
类似的操作:
1.读取2个文件到2个独立的Set;
2.Set求交集;(找到公共出现的行);
3.Set求差集;(过滤重复行);
end.


2009年1月06日 20:42
0 0

先直接组合,再排序,再遍历一次,

2009年1月06日 17:08

相关推荐

    删除文本文件中重复行(vb.net)

    ### 删除文本文件中重复行(vb.net) #### 知识点概述 本文将详细介绍如何使用VB.NET编程语言来实现从文本文件中删除重复行的功能。该功能主要涉及到以下几个关键概念和技术点: 1. **文件读取与写入**: VB.NET中...

    判断文本文件是否为UTF-8编码

    本资源主要关注如何判断一个文本文件是否采用UTF-8编码。 在Windows系统中,比如Windows 7旗舰版,我们经常使用Notepad.exe(记事本)来查看和编辑文本文件。在编程环境中,有时候我们需要编写代码来检查文件的编码...

    JAVA文本去重查重判断文件重复工具程序源代码 查重是指对文本、论文、作业等进行重复率检测,以防止学术不端和抄袭 查重主要是通过

    JAVA文本去重查重判断文件重复工具程序源代码 查重是指对文本、论文、作业等进行重复率检测,以防止学术不端和...指纹比对法:将文本转换成固定长度的指纹码,通过计算指纹码之间的相似度,来判断文本是否存在重复。

    统计文本文件中一段英文中某个单词出现的次数及其出现的位置

    2. 遍历文本文件中的每个字符,使用函数 `_hke` 判断字符是否为英文字符。 3. 如果字符为英文字符,则将其加入到 `str` 中,并将 `word_number` 加 1。 4. 对于每个单词,使用函数 `_loHKE` 将其转换为小写字符,...

    Java编程实现比对两个文本文件并标记相同与不同之处的方法

    在判断文本文件的相似度时,我们可以使用String类的equals()方法来比较两个字符串是否相同。在本文的示例代码中,我们使用equals()方法来比较文件1和文件2的每一行数据,并将结果输出到结果文件中。 四、Java输出...

    C#实现文件比较的功能,比较两个文件内容是否相同

    使用`StreamReader`类可以方便地读取文本文件的每一行。需要注意的是,这种方法假设文件编码相同,且比较时要考虑行结束符的差异。 在实际开发中,可能还需要处理异常,如文件不存在、读取权限不足等问题。为了提高...

    通用文件筛选工具(批量查询按行存储的文本文件,并导入EXCEL表中)

    本程序将按行读取所选择的文件(或者有换行符的),在读取完文件后,无论是否找到,都会创建和源文件相同类型的文件,即使是.exe或.rar(一般是打不开的),文件名存储为“output”+原文件名。即使没有找到任何相...

    快速比对两个txt文件内容是否一致

    在IT行业中,文本比对是一项常见的任务,尤其在...对于日常办公中需要批量处理文本文件的情况,这样的工具无疑提高了工作效率。同时,了解这些Python模块的工作原理,也有助于深入理解文本处理和文件操作的相关知识。

    文本重行过滤器

    文本重行过滤器的工作原理就是读取文本文件的每一行,然后通过某种比较机制(如哈希表或排序算法)来检测是否存在相同的行,并在输出时排除这些重复项。 在实际操作中,用户通常会遇到以下几种情况: 1. **全匹配**...

    易语言源码易语言判断文本是否数字和字母源码.rar

    在判断文本是否只包含数字和字母时,可能需要用到`取文本字符类型`函数,该函数可以返回文本中每个字符的类型。 2. **循环结构**:为了遍历整个文本,易语言的`循环`或`直到`语句是必不可少的。通过循环,我们可以...

    批量文本文件中查找字符串.rar

    "批量文本文件中查找字符串"这个主题聚焦于如何在多个文本文件中高效地定位特定的字符串。下面将详细阐述这个过程涉及到的技术点和实现方法。 首先,我们需要了解“批量”处理的概念。批量处理意味着我们要对一组...

    文件特征码,判断文件内容是否相同;色彩直方图,搜索相似图片

    例如,在文件传输或备份过程中,通过对比目标文件和源文件的哈希值,可以快速判断文件在传输过程中是否出现错误或被篡改。 接着,我们转向色彩直方图,这是图像处理和计算机视觉领域中的一个基础概念。色彩直方图是...

    易语言文本行比较

    4. 条件判断:在比较文本行时,我们需要使用条件判断语句(如`如果`和`否则`)来确定两行文本是否相等或满足特定条件。例如,`字符串比较`返回值为零表示两个字符串相等,非零则表示不等,这在比较过程中十分关键。 ...

    Python判断两个文件是否相同与两个文本进行相同项筛选的方法

    对于文本文件,除了判断其内容是否完全一致之外,还经常需要找出两个文件中的相同项。这在处理大量数据时尤为有用,例如在数据分析、日志处理等领域。 #### 使用集合操作进行相同项筛选 Python 的集合(set)非常...

    文本处理工具 文件去重工具

    - 哈希算法:通过计算文件的哈希值(如MD5或SHA-1)来快速判断两个文件是否相同,哈希值相同的文件几乎可以认定为重复。 - 内容比较:对于部分哈希值不同但内容相似的文件,可以进行逐行或关键词比较来确定是否...

    文件比较器,可以进行二进制比较,文本比较

    在二进制模式下,工具会逐字节对比两个文件的内容,以确定它们是否完全相同。这对于检查程序的编译结果、验证软件更新的完整性或查找硬盘上的损坏文件非常有用。例如,"beycomp.exe" 可能就是这样一个二进制文件比较...

    java文本文件搜索

    在这个例子中,`searchForTextFiles()`方法实现了递归搜索,`isTextFile()`方法用于判断是否为文本文件。`main()`方法是程序的入口点,设置起始目录并打印出所有找到的文本文件的绝对路径。 在实际应用中,你可能...

    打印当前文件夹下指定类型文件到文本文件

    在IT领域,日常工作中我们经常需要处理大量的文件,有时候为了管理和分析方便,我们需要将特定类型的文件名输出到文本文件中。这个操作可以帮助我们快速记录、查看或进一步处理这些文件。标题"打印当前文件夹下指定...

    matlab 中如何读取文本文件.pdf

    本文将详细介绍如何在MATLAB中读取不同类型文本文件的方法。 首先,我们来看一种通用的方法,即使用`fgetl`和`fgets`函数。这两个函数允许逐行读取文本文件。例如,函数`dataread`在描述中提到,它能读取指定行并将...

    易语言源码易语言文本行比较源码.rar

    在源码中,开发者可能会结合这些基本命令,配合条件判断、循环等结构,实现更复杂的文本行比较逻辑,例如逐行读取文本文件,比较每行的内容,查找差异,或者进行排序等操作。 源码分析可能包括以下步骤: - 打开并...

Global site tag (gtag.js) - Google Analytics