免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6045 | 回复: 3
打印 上一主题 下一主题

[文本处理] 各位大大能不能给我这个标示的脚本? [复制链接]

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
1 [报告]
发表于 2013-10-28 08:14 |显示全部楼层
本帖最后由 104359176 于 2013-10-28 08:30 编辑

回复 5# rubyish


     不要纠结,世界上有太多的问题,我们解决不了。

     以下几个正则匹配来标识污染:

      点  . -> [^X]

     AXA .BX[AB]. .[AB]XB. ..CX[ABC].. ..[ABC]XC.. ...DX[ABCD]... ...[ABCD]XD...

     转置字符串再匹配一次就好了。

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
2 [报告]
发表于 2013-10-28 16:00 |显示全部楼层
本帖最后由 104359176 于 2013-10-31 19:41 编辑
  1. #!perl

  2. use 5.016;
  3. use YAML qw(Dump);

  4. my @array = <DATA>;
  5. chomp @array;

  6. my @pattern_list = qw(
  7. X+$
  8. X+A
  9. X+B[^X]
  10. X+B$
  11. X+B(?<=X)
  12. X+C$
  13. X+C(?<=X)
  14. X+C[^X]$
  15. X+C[^X](?<=X)
  16. X+C[^X][^X]
  17. X+D$
  18. X+D[^X]$
  19. X+D[^X][^X]$
  20. X+D[^X](?<=X)
  21. X+D[^X][^X](?<=X)
  22. X+D[^X][^X][^X]
  23. );

  24. say Dump(zhuan_zhi(change_array(zhuan_zhi(change_array([@array])))));

  25. sub wu_ran {
  26.     my $char_list = shift;
  27.     foreach my $pat (@pattern_list) {
  28.         # x equal X
  29.         $char_list =~ s/($pat)/lc($1)/gei;
  30.     }
  31.     return $char_list;
  32. }

  33. sub change_wu_ran {
  34.     my $char_list = shift;
  35.     $char_list = wu_ran($char_list);
  36.     $char_list = scalar reverse(wu_ran(scalar reverse($char_list)));
  37.     return $char_list;
  38. }

  39. sub change_array {
  40.     my $ref_array = shift;
  41.     my @change_array = ();
  42.     foreach my $char_list (@{$ref_array}) {
  43.         my $change_char_list = change_wu_ran($char_list);
  44.         push @change_array, $change_char_list;
  45.     }
  46.     return [ @change_array ];
  47. }

  48. sub zhuan_zhi {
  49.     my $array = shift;
  50.     my $zhuan_zhi = [];
  51.     foreach my $char_list (values $array) {
  52.         my $array_count = 0;
  53.         foreach my $char (split //, $char_list) {
  54.             $zhuan_zhi->[$array_count] .= $char;
  55.             $array_count++;
  56.         }
  57.     }
  58.     return $zhuan_zhi;
  59. }

  60. __DATA__
  61. ABDCDCDCAAXCXCDCCABABDCDCDCAABXBABDCDCDCAABBCDCCAXDBBXABDCDCDCAABBCDXCCA
  62. BBCDCCABBBABXCDCDCAABBCDXCCABBBBBABDCDCDCAABBCDCCAXBBBABCDAAAXBCDADCAXXX
  63. XABCDCDCAAXBBCCDCCABABDCDCDCAABXBABDABACCCAXCDCDCAABBCDCCABBBXABDCDCDCAA
  64. AACDCCAADCABDCDCDCAABXCDXCXABCDDBABDCDCDCAABBXBXCAABBBABCDAAAXBCDADCABBB
  65. ADCAAAAAXABCDCCCCCDCABXBBCCDCCABABDCDCDCAABXBABDABDCCCAXCDCDCAAAAABBCDCC
  66. XCCCAABDCAAXXAADCCCCCCAACCAAAAAAAAAXBBDCCXACDACDAAXCBBBBBBBAAABCADDCAAXC
  67. XABCDCDCAAXBBCCDCCABABDCDCDCAABXBABDABACCCAXCDCDCAABBCDCCABBBXABDCDCDCAA
复制代码
output:
  1. ---
  2. - aBDCDCDCaaxCxcdcCABABDCDcDcAabxbaBDCDCDCAABbCdCcaxdbbxaBDCDCDcAAbbcdxcca
  3. - bBCDCCABbBabxcdcDCAAbbcdxccaBBbbBABDCDCDCAAbBcDcCaxbbbABCDAAaxbcDADCaxxx
  4. - xaBCDCDCaaxbbCCDCCABAbdCDCdCAabxbaBdABACCCaxcdcdCAaBBcDcCABbbxaBDCDCDcaa
  5. - aACDCCAAdCabdCDCDCAabxcDxCxaBCDDBABdCDCDCAAbbxBxcaaBBBAbCDAAaxbcDADCAbbB
  6. - aDCAAAAaxaBcDCCCCCDCabxbbCcDCCABABDcDCDCAabxbaBdABDCCCaxcdcDCaAAAABBCdcC
  7. - xcccAABDcAaxxaADCCCCCcaAcCaAAAAaAAaxbbdccxaCDACdAaxcbbBbBBBAAaBCADDCAaxc
  8. - xaBCDCDCaaxbbCCDCCABABDCDCdCAabxbaBdABACCcaxcdcdCAaBBCDcCABbbxaBDCDCDCaA
复制代码

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
3 [报告]
发表于 2013-10-30 09:02 |显示全部楼层
回复 12# rubyish


    你的代码比问题还复杂,基本感觉是在看机器码。如果代码出问题了,估计又要纠结了。

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
4 [报告]
发表于 2013-10-30 16:09 |显示全部楼层
本帖最后由 104359176 于 2013-10-30 16:10 编辑

回复 14# pitonas


     如果代码让人感觉遥不可及,就危险了,也许我用了后顾的功能,这个确实很多人不知道。其实也可以不用。

    把  (?<=X) 直接替换成 X 也行。不过不知道污染过的数据,还能继续污染吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP