比较包含上一个和下一个文件中重复“存根”的许多文本文件,并自动删除重复文本

比较包含上一个和下一个文件中重复“存根”的许多文本文件,并自动删除重复文本,第1张

概述我有大量的文本文件(1000),每个文件包含一篇学术期刊的文章.不幸的是,每篇文章的文件还包含上一篇文章末尾(开头)和下一篇文章开头(末尾)的“存根”. 我需要删除这些存根以准备在文章上运行频率分析,因为存根构成重复数据. 在所有情况下,没有简单的字段标记每篇文章的开头和结尾.但是,在两种情况下,重复文本似乎都格式相同且在同一行上. 将每个文件与下一个文件进行比较然后删除重复文本的1个副本的脚本将 我有大量的文本文件(1000),每个文件包含一篇学术期刊的文章.不幸的是,每篇文章的文件还包含上一篇文章末尾(开头)和下一篇文章开头(末尾)的“存根”.

我需要删除这些存根以准备在文章上运行频率分析,因为存根构成重复数据.

在所有情况下,没有简单的字段标记每篇文章的开头和结尾.但是,在两种情况下,重复文本似乎都格式相同且在同一行上.

将每个文件与下一个文件进行比较然后删除重复文本的1个副本的脚本将是完美的.这似乎是编程时非常常见的问题,所以我很惊讶我找不到任何可以做到这一点的东西.

文件名按顺序排序,因此将每个文件与下一个文件按顺序进行比较的脚本应该可以正常工作.例如.

bul_9_5_181.txtbul_9_5_186.txt

是两篇文章,一篇从第181页开始,另一篇在第186页.这两篇文章都包含在下面.

有两卷测试数据位于[http://drop.io/fdsayre][1]

注意:我是一名学者,对心理学史上一个项目的旧期刊文章进行内容分析.我不是程序员,但我有10年的linux经验,通常可以解决问题.

谢谢你的帮助

filename:bul_9_5_181.txt

SYN和放大器; STHESIA

ISI

大多数葡萄牙语单词表示与黑色有关的黑色物体或想法.无可否认,这种关联并不是真正的感觉统治,但作者认为,这些逻辑和自发的联想以及有色试听的真实案例之间只是程度问题.
参考

DOWNEY,6月E.一个彩色的味觉案例.阿米尔. J. of Psycho!.,1911,22,S28-539MEDEIROS-E-ALBUQUERQUE. Sur un phenomene de synopsIE presente par des million de sujets. /. de psychol. norm,et path.,8,147-151. MYERS,C.S.一例感觉异常.英国人. J. of Psychol.,4,228-238.

影响现象 – 实验
由教授JOHN F. .SHEPARD撰写
密歇根大学

这一年里,莱比锡实验室出现了三篇文章. Drozynski(2)反对在研究有感觉的有机反应时使用味觉和嗅觉刺激,因为可能涉及的呼吸紊乱.他使用有节奏的听觉刺激,并发现当以不同的速率和不同的分组给予时,它们伴随着每个主体的特征感受.他记录胸部呼吸,并从血压计和水体积描记器曲线.每个实验都以正常记录开始,然后给出刺激,然后是对比刺激;最后,又采取了另一种常态.测量呼吸的长度和深度(没有记录时间线),并确定吸气长度与呼气长度的关系.还测量了脉搏的长度和高度.给出了表格摘要,其中列出了在每种类型的感觉的反应期间作者发现每个量增加或减少的次数.伴随给定节奏的感觉状态总是复杂的,但结果被称为似乎占主导地位的那个维度.从记录中仅重现正常和反应期间的少数断开的提取物.作者指出,兴奋会增加呼吸的速度和深度,吸气 – 呼气比以及脉搏的速率和大小.手臂体积有波动.只要效果平静,就会导致速度和深度降低

182

JOHN F. SHEPARD

呼吸,吸气 – 呼气比,以及脉搏率和大小.手臂容积显示出随呼吸波升高的趋势.宜人性表明

解决方法 这是Perl中另一个可能的解决方案的开始(它按原样工作,但如果需要可能会变得更复杂).听起来好像你所关心的是删除整个语料库中的重复内容并且不关心一篇文章的最后部分是否在下一个文章的文件中,只要它不在任何地方重复.如果是这样,此解决方案将删除重复的行,只留下整个文件集中任何给定行的一个副本.

您可以只在包含没有参数的文本文件的目录中运行该文件,也可以指定一个文件名,其中包含您希望按照您希望它们处理的顺序处理的文件列表.我推荐后者作为你的文件名(至少在你提供的示例文件中)在命令行上使用像ls这样的简单命令或在Perl脚本中使用glob时,不会自然地列出.因此,它不一定要将正确的文件相互比较,因为它只是在列表中运行(由glob命令输入或生成).如果您指定列表,则可以保证它们将按正确的顺序处理,并且不需要很长时间才能正确设置.

该脚本只打开两个文件,并记下第二个文件的前三行.然后它为第一个文件打开一个新的输出文件(原始文件名’.new’),并将第一个文件中的所有行写入新的输出文件,直到找到第二个文件的前三行.在最后一个文件中,第二个文件中没有三行,但在我查看的所有文件中,由于期刊名称标题和页码,似乎是这种情况.一条线肯定是不够的,因为期刊标题往往是第一线,这将提前切断.

我还应该注意,输入的文件列表中的最后一个文件将不会被处理(即根据它创建一个新文件),因为这个过程不会改变它.

这是脚本:

#!/usr/bin/perluse strict;my @files;my $count = @ARGV;if ($count>0){    open (IN,"$ARGV[0]");    @files = <IN>;    close (IN);} else {    @files = glob "bul_*.txt";}$count = @files;print "Processing $count files.\n";my $lastfile="";foreach(@files){    if ($lastfile ne ""){        print "Processing $_\n";        open (fileB,"$_");        my @fileBlines = <fileB>;        close (fileB);        my $line0 = $fileBlines[0];            if ($line0 =~ /\(/ || $line0 =~ /\)/){                    $line0 =~ s/\(/\\(/;                    $line0 =~ s/\)/\\)/;            }        my $line1 = $fileBlines[1];        my $line2 = $fileBlines[2];        open (fileA,"$lastfile");        my @fileAlines = <fileA>;        close (fileA);        my $newname = "$lastfile.new";        open (OUT,">$newname");        my $i=0;        my $done = 0;        while ($done != 1 and $i < @fileAlines){            if ($fileAlines[$i] =~ /$line0/                 && $fileAlines[$i+1] == $line1                && $fileAlines[$i+2] == $line2) {                $done=1;            } else {                print OUT $fileAlines[$i];                $i++;            }        }        close (OUT);    }    $lastfile = $_;}

编辑:在第一行中添加一个括号检查,进入正则表达式检查后面的双重性,如果找到它,则它们不会弄乱双重性检查.

总结

以上是内存溢出为你收集整理的比较包含上一个和下一个文件中重复“存根”的许多文本文件,并自动删除重复文本全部内容,希望文章能够帮你解决比较包含上一个和下一个文件中重复“存根”的许多文本文件,并自动删除重复文本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1086651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存