CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他开发语言 >  脚本语言(Perl ,Python)

菜鸟求解

楼主numchun(chunchun)2006-03-14 13:54:52 在 其他开发语言 / 脚本语言(Perl ,Python) 提问

我从来没有用过perl。现在有一个文件需要处理。因为项目时间太紧,估计自己学习perl后再写个程序已经来不及了,所以需求大牛们的帮助。要求如下:  
  我有一个文件,假设文件名为filename.txt,里面的内容大概是下面的一个形式。  
   
  <command_node keyword="alias" helpmethod="0" help="Display,   add,   delete   alias   string\r\n#   alias\r\n#   alias   &lt;alias   name&gt;\r\n#   alias   &lt;alias   name&gt;   &lt;replaced   text&gt;\r" helphandler="" mode_support="false" prompt_string="" access_level="0" allow_no_form="false" inherit_rapidmarks="true" global_node="true" no_generate="false" meta_node="false" queue_node="false" nolink_node="false" partition="">  
   
  现在我想做如下的处理:  
  1.   把keyword="..."替换成keyword="",把help="..."替换成help="",并把原来的keyword和help的字符串放在按一定的格式放在另外一个文件(假设文件名为result.txt)中。result.txt文件的格式大概如下:  
  {"keyword   string","help   string"},  
  {...,...},  
  ...  
  2.   help的字符串中有一些是特殊的字符串需要被其他的字符代替。  
        &gt;用>代替  
        &lt;用<代替  
  于是上面的help字符串就被替换成下面的字符串:  
  Display,   add,   delete   alias   string\r\n#   alias\r\n#   alias   <alias   name>\r\n#   alias   <alias   name>   <replaced   text>\r  
   
  3.   把helphandler=""替换成helphandler="help_handler_function"。  
   
  请各位大牛们给一个例子或者解答吧,万分感谢!  
   
  问题点数:100、回复次数:5Top

1 楼xyzxyz1111(程序员的自我修养)回复于 2006-03-14 14:34:34 得分 50

$/   =   ">";  
  open(RESULT,   ">result.txt");  
   
  while(<>){  
          s/helphandler=""/helphandler="help_handler_function"/g;  
          my   ($kw,   $hp);  
          if(/(keyword=")([^\"]*)"/){  
                  $_   =   "(".$`.$1."\"".$'.")";  
                  $kw   =   $2;  
          }  
          if(/(help=")([^\"]*)"/){  
                  $_   =   "(".$`.$1."\"".$'.")";  
                  $hp   =   $2;  
          }  
          $hp   =~   s/&gt;/>/g;  
          $hp   =~   s/&lt;/</g;  
   
          print   RESULT     "[\"".$kw."\",   \"".$hp.   "\"]\n"   if   $kw   or   $hp;  
          print   ;  
  }  
   
  close(RESULT);  
  Top

2 楼xyzxyz1111(程序员的自我修养)回复于 2006-03-14 14:35:43 得分 10

使用方法  
  perl   test.pl   filename.txt   >   filename_out.txt  
  Top

3 楼numchun(chunchun)回复于 2006-03-14 15:43:19 得分 0

非常谢谢xyzxyz1111。  
  刚才我试着运行了你给我的程序,结果基本符合我的要求。  
  我在提问的时候疏忽了一个细节,需要请你再帮我解决一下。  
  filename.txt中的内容有两种形式,如下:  
  <command_node   keyword="alias"   helpmethod="0"   help="Display,   add,   delete   alias   string\r\n#   alias\r\n#   alias   &lt;alias   name&gt;\r\n#   alias   &lt;alias   name&gt;   &lt;replaced   text&gt;\r"   helphandler=""   mode_support="false"   prompt_string=""   access_level="0"   allow_no_form="false"   inherit_rapidmarks="true"   global_node="true"   no_generate="false"   meta_node="false"   queue_node="false"   nolink_node="false"   partition="">  
   
  <pd keyword="alias   name" type="string" set_rapidmark="" paramnum="0" nokeyword="yes" typename="string" validstr="" accessstr="" defaultstr="" customvalid="" convert2base="No" helpmethod="0" helpstr="alias   to   which   the   text   in   the   &lt;replaced   text&gt;   field   is   bound" helphandler=""   />  
   
  第一种是以command_node开头的,其helphandler=""需要用helphandler="help_handler_function"代替。  
  第二种是以pd开头的,其helphandler=""则保持原样。  
   
  如果这种需求,则程序应该如何修改?Top

4 楼xyzxyz1111(程序员的自我修养)回复于 2006-03-14 16:21:36 得分 40

s/helphandler=""/helphandler="help_handler_function"/g;  
  改成  
    s/helphandler=""/helphandler="help_handler_function"/g   if   /<command/;  
  就可以了Top

5 楼numchun(chunchun)回复于 2006-03-14 16:31:32 得分 0

呵呵,太感谢xyzxyz1111了。  
  结帖!Top

相关问题

  • 菜鸟求解
  • 菜鸟求解!!!!!奉分
  • 菜鸟问题求解
  • 菜鸟高分求解
  • 菜鸟继续求解
  • 菜鸟问题,请求解答!!20分!!!
  • 菜鸟求解DLL的导出问题
  • 菜鸟求解(多年来的困惑)
  • 菜鸟的问题,高分求解!
  • 菜鸟发问,求解达淫!

关键词

  • 文件
  • hp
  • helphandler
  • 字符串
  • keyword
  • 如下
  • help
  • handler
  • 程序
  • 代替

得分解答快速导航

  • 帖主:numchun
  • xyzxyz1111
  • xyzxyz1111
  • xyzxyz1111

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo