【发布时间】:2014-10-20 00:41:03
【问题描述】:
Super n00by 在这里试图让一些代码工作。我基本上有一个项目,我正在解析 200 个中等大小的文本文件,并且需要将结果打印到另一个制表符分隔的文件中。我正在尝试提取 Phone、address 和 zip code,并将它们连同姓名一起打印在一行上他们来自的文件。
我已经成功地搜索了一个电话号码,但我不知道如何搜索其他两个字符串而不破坏我所做的工作。
我还有一个问题,文件名与其中的电话号码一起打印,但也与下一个文本文件中的电话号码一起打印。
这是我的代码:
use strict;
use warnings;
my $calls_dir = "Ask/";
opendir( my $search_dir, $calls_dir ) or die "$!\n";
my @files = grep /\.html$/i, readdir $search_dir;
closedir $search_dir;
print "Got ", scalar @files, " files\n";
my %seen = ();
foreach my $file (@files) {
my $current_file = $calls_dir . $file;
open my $FILE, '<', $current_file or die "$file: $!\n";
while (<$FILE>) {
#if (/phone/i) {
chomp;
#if (/phone\s*(.*)\r?$/i) {
#if (/^phone\s*:\s*(.*)\r?$/i) {
if (/Phone:\s*(.*)\r?$/i) {
$seen{$1} = 1;
foreach my $addr ( sort keys %seen ) {
print "\n";
print "\n";
print $file;
print "$addr\n";
print "\n";
print "\n";
}
}
}
close $FILE;
}
第 28 行和第 29 行是我现在打印的位置,但我真的想打印分隔到文件的制表符,就我得到的结果而言,这是一个问题示例:
out_Agilent_Technologies_ask.html+1 408-555-8886. Fax: +1 408-555-8474.
out_Illumina_ask.html+1 408-555-8886. Fax: +1 408-555-8474.
out_Illumina_ask.html408.555.5150
问题是第 2 行中的第一个号码与第二个公司名称一起打印。第 3 行打印文件名以及其中正确的电话号码。问题是因为在文件中搜索需要很长时间吗?没有把握。再次提前感谢您的帮助。
这是我正在解析的文件之一的示例:
文件:Ask/Illumina_ask.html AnswersQ&A Community Sign In Sign OutAdvanced SearchaskLogo * Everything * Images * News * Videos * Shopping * More * Maps * Less 探索答案关于 -------------- ------- * 电话号码属于 * 免费手机号码搜索 * 有电话号码需要姓名 * 将电话号码与一个人匹配 * 灰狗时刻表和票价 * 贾斯汀比伯 * 电话号码查找 * 免费未列出的电话号码搜索* 灰狗巴士电话号码 * 识别电话号码 * 手机号码簿 * 麦莉赛勒斯 更多答案 联系我们 |联系 Illumina 技术支持和其他关键部门 www.illumina.com/company/contact_us.ilmn 查找电子邮件和电话联系信息,供寻求技术支持或客户服务的客户、投资者、... 联系我们... 免费电话号码... 地点 | Illumina 商业办公地点 www.illumina.com/company/contact-us/locations.ilmn 1.608.258.3080 北美以外 1.608.258.3088 ... 1.408.861.3610 电话 ... Rm. 1103A,大厦。朝阳区曙光西里A5号凤凰广场H Illumina |用于基因研究的测序和基于阵列的解决方案 www.illumina.com/ Illumina 的测序和阵列技术推动了生命科学研究、转化和消费领域的进步…… 联系我们 · MyIllumina;工具。支持 - Illumina support.illumina.com/ 联系我们 · MyIllumina;工具。 - BaseSpace · - DesignStudio · - 分析设计 ... x 使用自定义协议选择器个性化您的 Illumina 用户指南 » ... 关于我们 - Illumina www.illumina.com/company/about-us.ilmn SNP 基因分型;拷贝数变异;基因组测序; DNA ......并在他们与我们的整个关系中提供支持,以最大限度地提高他们的科学成功。供应商 |当前和潜在 Illumina 供应商的常见问题解答 www.illumina.com/company/contact-us/suppliers.ilmn 银行信息:美国银行信用查询服务 ... 传真号码 415.343.9301。贸易信贷... 电话:408.245.5150 分机。 155. VWR 国际有限责任公司现在就加入我们,帮助改变现状——Illumina www.illumina.com/company/careers.ilmn 创造力帮助我们建立了公司,并继续推动我们的发展。我们有不懈的努力来制造可以改善人类健康的优质产品。我们已经... Illumina, Inc. - San Diego, CA - 生物技术| Facebook www.facebook.com/illuminainc ... 916 在这里。 Illumina 致力于通过解锁……电子邮件或电话、密码来促进人类健康。 Keep me .... Evan Eichler 博士于 10 月 9 日与我们一起讨论自闭症的新突变、基因和通路。在此处注册: ... 蝙蝠充当埃博拉病毒的宿主,并且没有表现出这种疾病的症状。在Illumina工作| Glassdoor www.glassdoor.com/Overview/Working-at-Illumina-EI_IE11671.11,19.htm ... 在 Illumina 工作。薪水、评论等 - 全部由 Illumina 的员工发布。 ... 关于我们;我们的价值;回馈;为什么选择Illumina?职业生涯。 Illumina测序技术| PerkinElmer www.perkinelmer.com/pages/020/genomic_analysis/illumina-sequencing-technology.xhtml 欢迎访客(登录/注册);美国(更改) .... Illumina 是用于遗传分析的下一代测序技术的领先供应商... 探索更多答案 关于 ------------------ -------- * 街道地址的电话号码 * 名人电话号码 * 查找手机号码的免费服务 * 免费反向手机目录 * 我有地址但需要电话号码 * 贾斯汀比伯的真实电话号码 *免费查询手机号码 * Chris Brown 12345678910Next » 热门问答 ------------ Q: Chape 的 Illumina (sp) 电影院的电话号码是什么... ------ -------------------------------------------------- --- 答:919-932-9000 了解更多» 的放映时间 来源:www.chacha.com 问:美国有多少个有效电话号码? -------------------------------------------------- --- A: 有 700M-800M 之间分配的地理电话号码。 .电信服务提供商是唯一知道他们有多少活跃号码的实体... 阅读更多 » 来源:www.quora.com 问:美国的电话号码是什么? --------------------------------- A:美国的电话号码是 1,然后是区号状态,然后是后面的 7 位数字。阅读更多 » 来源:wiki.answers.com 问:如何在美国移动电话上阻止电话号码。 - - - - - - - - - - - - - - - - - - - - - - - - 一个: 1. 在手机键盘上拨“67”。 2. 拨打您要拨打的号码。 3. 按手机上的“发送”或绿色电话按钮。阅读更多 » 来源:www.ehow.com 问:美国支持 NFC 的手机的大致数量是多少? -------------------------------------------------- -------- A:如果您想具体了解美国的nfc enable 手机,可以参考以下链接。希望对您有所帮助。 . http://www.nfcrumors.com/。 nfc-pho。阅读更多 » 来源:www.quora.com 移动网站 · 关于 · 隐私 · 条款 · 职业 · 询问博客 · 问答 · 移动 · 帮助 · ******************** ********************
我现在也有一个问题,我认为我只需要匹配电话:我现在需要匹配电话“或”+1“或“(”来返回一个数字,因为格式都不同。
所以我的这行代码: if (/电话:\s*(.*)\r?$/i) { $seen{$1} = 1;
需要一些东西来完成它,但我不知道该怎么做。
【问题讨论】:
-
你的输入文件格式是什么?
-
向我们提供示例输入文件,以便清楚。
-
请显示您输入文件的样本。此外,如果可能,请直接从您的数据源文件之一复制并粘贴它,而不是给出“类似这样”的答案。我知道个人详细信息可能很敏感,但是如果您将字母更改为不同的字母,将数字更改为不同的数字,只要我们能看到文件的基本布局,就可以了。没有它几乎不可能提供帮助。
-
在上面添加了示例文件。谢谢。