关于perl的问题

[复制链接]
查看11 | 回复4 | 2011-5-18 11:22:58 | 显示全部楼层 |阅读模式
现有a文件
1
00:00:16,000--00:00:19,000
WhenIwas10yearsold,
2
00:00:19,000--00:00:22,000
acousinofminetookmeonatourofhismedicalschool.
3
00:00:22,000--00:00:24,000
Andasaspecialtreat
4
00:00:24,000--00:00:26,000
hetookmetothepathologylab
5
00:00:26,000--00:00:28,000
andtookarealhumanbrain
6
00:00:28,000--00:00:30,000
outofthejar
7
00:00:30,000--00:00:32,000
andplaceditinmyhands.

b文件
1
00:00:16,000--00:00:19,000
我十岁的时候
2
00:00:19,000--00:00:22,000
我的一个表兄带我参观了他上的医学院
3
00:00:22,000--00:00:24,000
作为一次特别优待
4
00:00:24,000--00:00:26,000
他带我去了病理学实验室
5
00:00:26,000--00:00:28,000
拿出一个真正的人脑
8
00:00:28,000--00:00:30,000
从一个罐子里
9
00:00:30,000--00:00:32,000
把它放在了我手里

然后将a文件以句号为分割,时间轴合并,提取出了
c文件
1
00:00:16,000--00:00:22,000?1
WhenIwas10yearsold,
acousinofminetookmeonatourofhismedicalschool.
2
00:00:22,000--00:00:32,000
Andasaspecialtreat
hetookmetothepathologylab
andtookarealhumanbrain
outofthejar
andplaceditinmyhands.

问题是:怎么从b文件中提取出与c文件对应的中文文本d文件呢,时间轴以英文a文件的为依据如下:
d文件
1
00:00:16,000--00:00:22,000?1
我十岁的时候,
我的一个表兄带我参观了他上的医学院。
2
00:00:22,000--00:00:32,000
作为一次特别优待,
他带我去了病理学实验室,
拿出一个真正的人脑,
从一个罐子里,
把它放在了我手里。

暂时先这么多分,好的话,一定会再加的,非常谢谢啦~
回复

使用道具 举报

千问 | 2011-5-18 11:22:58 | 显示全部楼层
#!/usr/bin/perl
#abcd.pl

my($i,$num,$file)=(1,0,\'\');

openA,\"afile\";
while(A){push@index,$.if/\\.$/}

openB,\"bfile\";
my@B=B;
$B[($_-1)]=~s/$/./for@index;
$file.=$_for@B;
my@D=split/\\./,$file;

for(@D){
/^(\\d\\d:.*?)--(?:.*)*(\\d\\d.*?\\d)$/sm;
my($t1,$t2)=($1,$2);
s/^\\d(:.*)?$//gm;
s/\\n/\\n/mg;
s/^(\\D.*\\D)$/$1,/mg;
s/,$/。/;
print$num,\"\\n\",\"$t1--$t2\",$_,\"\\n\";
}
======================
perlabcd.pl

1
00:00:16,000--00:00:22,000
我十岁的时候,
我的一个表兄带我参观了他上的医学院。
2
00:00:22,000--00:00:32,000
作为一次特别优待,
他带我去了病理学实验室,
拿出一个真正的人脑,
从一个罐子里,
把它放在了我手里。



正则表达式是Perl语言的一大特色,也是Perl程序中的一点难点,不过如果能够很好的掌握他,就可以轻易地用正则表达式来完成字符串处理的任务,当然在设计中就更能得心应手了。

perl菜鸟,请指教









<h4class=\"ask\">追问


额……怎么运行啊,几个文件是在不同的文件里的,比如a.txtb.txtc.txt
回复

使用道具 举报

千问 | 2011-5-18 11:22:58 | 显示全部楼层
运行啊??
perlabcd.pl啊

作为一次特别优待,
艾??怎说捏?把afile改成a.txt把bfile改成b.txt
回复

使用道具 举报

千问 | 2011-5-18 11:22:58 | 显示全部楼层
看一开始你的就是这意思,试过,没产生啥作用么
回复

使用道具 举报

千问 | 2011-5-18 11:22:58 | 显示全部楼层
afilebfileabcd.pl
几个文件是在同的dir里

怎说捏?如果你还没有找到?
afile
============
1
00:00:16,000--00:00:19,000
WhenIwas10yearsold,
2
00:00:19,000--00:00:22,000
acousinofminetookmeonatourofhismedicalschool.
3
00:00:22,000--00:00:24,000
Andasaspecialtreat
4
00:00:24,000--00:00:26,000
hetookmetothepathologylab
5
00:00:26,000--00:00:28,000
andtookarealhumanbrain
6
00:00:28,000--00:00:30,000
outofthejar
7
00:00:30,000--00:00:32,000
andplaceditinmyhands.


bfile
==================
1
00:00:16,000--00:00:19,000
我十岁的时候
2
00:00:19,000--00:00:22,000
我的一个表兄带我参观了他上的医学院
3
00:00:22,000--00:00:24,000
作为一次特别优待
4
00:00:24,000--00:00:26,000
他带我去了病理学实验室
5
00:00:26,000--00:00:28,000
拿出一个真正的人脑
8
00:00:28,000--00:00:30,000
从一个罐子里
9
00:00:30,000--00:00:32,000
把它放在了我手里


perlabcd.pldfile


you可以试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行