问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用perl读取txt文件(英文诗) 统计单词数量 以及频率 并且指出出现位置(第几行 几个)

发布网友 发布时间:2022-05-19 23:12

我来回答

1个回答

热心网友 时间:2023-10-19 23:54

这问题让人很纠结... 看上去很有意思, 但写了出来又怕你看不懂... 只管写出来给你参巧下吧 , 顺便推介一下, Katie Melua 的 A Happy Place 真的很好听, MV 也很有感觉...


use strict;
use warnings;

my ($lineCount, $totalWords, %map);
while ( my $line = <DATA> ) {
    chomp $line;
    $lineCount++;
    $line =~ s/[^\w\d' ]//g;
    my $wordPos;
    foreach my $word ( split /\s+/, $line ) {
        $word = lc $word;
        $wordPos++;
        $totalWords++;
        $map{$word} = [] unless ( defined $map{$word} ) ;
        my $this = $map{$word};                
        push @{$this}, "$lineCount-$wordPos" ;    
    }    
}

print "There are total $totalWords in this context$/";
foreach my $word ( sort keys %map ) {
    my $count = scalar ( @{$map{$word}} );
    print "$word existed $count times, where they are at$/";
    foreach my $index ( @{$map{$word}} ) {
        my ( $ln, $po ) = split /-/, $index;
        print "\tLine: $ln, Word position: $po$/";
    }
    print "$/";
}

__DATA__
"A Happy Place"

I'm going to find a happy
I'm going to find a happy
I'm going to find a happy place

Seven thousand eyes are watching
Marching home and no one's touching
Army of the city workers
Secretaries, lawyers, brokers
Heading for a London station
Heading for a quick salvation
Oblivious to cherry cola
Trying to sell to every stranger

Stuck here it's cold I'm standing
Hoping for some understanding
Only way to go is inside

I'm going to find a happy
I'm going to find a happy
I'm going to find a happy place

Seven thousand light years travel
Let my sense of time unravel
Trapped feelings are never ending
Send those weaknesses descending
Towards the earth's red centre
Let the fire rise and enter
Tap into the primal power
Rising like a giant tower

The energy receiving
Cut a hole right through the ceiling
People getting smaller as you fly

I'm going to find a happy
I'm going to find a happy
I'm going to find a happy place

(I'm gonna find a happy place) A happy Place
(I'm gonna find a happy place) A happy place
(I'm gonna find a happy place) A happy place

Find a star, send down a beam to where you are
An elevator of light taking you somewhere
Where you'll always be loved

I have found that stress and nonsense
Puts me in zone of avoidance
Could my mind be moving faster
Pulling like a super cluster
Can be hard to trust a feeling
But believing ends in seeing

We're going to find a happy
We're going to find a happy
We're going to find a happy place

(I'm gonna find a happy place) A happy place
(I'm gonna find a happy place) A happy place
(I'm gonna find a happy place) A happy place

追问很谢谢你的程序和你的推荐~~~不过说真的 我真的没有很看懂 不过我在努力看 非常感谢你 我也会去听你推荐的歌曲~~~~

追答

我这里是将文本和代码合二为一, 旨在给你看到我的思路和流程, 所以你会见到我 read 的只是 <DATA> 而 DATA 就是这代码最後的部份 ( __DATA__ ). 在实际操作里, 你或者会写成

my ($lineCount, $totalWords, %map);
my $file = 'D:/Poem.txt" ; # 将这里改成你档案的位置
open Src, $file or die "Can't open file at '$file'"; # 加了这句
while ( my $line = <Src> ) { # 由 DATA 改成 Src
    chomp $line;
    ....
    ....
}
close Src; # 别忘了
    
print "There are total $totalWords in this context$/";    
...
...
# __DATA__ 和之後的那些就可不要了

还有不明白再私讯我吧... 你也可以看看我之前回答过的问题, 某些地方或会有点近似...

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请帮忙查iphone4手机的序列号dx3hnchpdp0n DX3J481PDP0N帮忙查一下 是真的吗 我不会查 大神们是翻新的? 苹果4激活日期查询 猫猫一直发情怎么办呢 如何帮助猫咪度过发情期呢? 本科英语都要过4级吗 车子中间的踏板是什么 高考400分能考哪些军事类二本 联通3g双卡双待智能导航手机 ...可以一个卡装移动2g的卡,专打电话,一个卡装联通3g流量卡吗 C语言,高手进 教师节征文 急需啊 我是高中生 开学前要交800字以上题目为《师恩难忘》的作文各位帮忙 德甲2015-2016直播有哪些 2012年3月3日 德甲 拜仁VS 勒沃库森哪个台直播? 欧冠小组赛E组第1轮 切尔西VS勒沃库森 高清视频直播地址 今晚德甲CCTV5直播吗 欧冠勒沃库森对拉齐奥哪个台直播 男足VS勒沃库森直播5月19日男足VS勒沃库森直播5.19男足VS勒沃库森直播5月19号足球友谊赛视频 切尔西VS勒沃库森直播 2011 欧冠小组赛E组第1轮切尔西VS勒沃库森直播 14号切尔西对勒沃库森直播 三月八号,就是明天,星期四 欧冠 巴萨 vs 勒沃库森中央台有直播么? 勒沃库森vs沃尔夫斯堡什么台直播 切尔西VS勒沃库森视频直播 切尔西VS勒沃库森现场直播 9.14欧冠切尔西VS勒沃库森哪个台转播 勒沃库森和霍芬海姆怎么没有直播 切尔西VS勒沃库森直播 切尔西对勒沃库森直播 9月14日欧冠小组赛切尔西VS勒沃库森哪个台转播 切尔西VS勒沃库森时间 切尔西VS勒沃库森直播 9月14号欧冠切尔西VS勒沃库森哪个台转播 科特布斯 勒沃库森 比赛时间 哪里可以看到直播 顺风车3人要付3倍钱吗 赵孟頫的主要成就 赵孟俯绘画史的贡献 怎样理解“运笔千古不易,结字因时相传”? 如何对文本中出现词汇次数进行统计(求JAVA源代码) java代码题 给出一段英文句子,让你把句子里的每个单词(无缩写形式) 出现次数计算出来! ps中选中文字后进行缩量,为什么显示没选中任何像素? 迷笛声卡怎么样 photoshop cs5遇到未选择任何像素怎么做啊? 我明明选到图了啊 迷笛2声卡与迷笛4声卡有什么区别? 迷笛rs声卡是立体声吗 迷笛PL声卡和跳羚K4声卡哪个好? 在音量调节里的,迷笛、CD音频、线路输入等都是什么意思? pS为什么有时候路径变选区提示未选择任何像素 迷笛M和艾肯micu谁好? 在PS路径里面把路径载入选区为什么说未选择任何像素 声卡的IRQ是什么意思噢? mid为何另类,只能通过录音的办法转换成mp3? 乔庄淡水虾代办电话 滨州市博兴县乔庄镇收虾代办收虾电话 雅隹迷笛键盘用法 营里镇的简介 世界上哪个地方的养虾技术最好?求推荐 iphone 7plus人像模式是两张照片怎么回事? 为什么跳街舞的大都是驼背