免费注册 查看新帖 |

Chinaunix

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

[文本处理] 文本内容处理为字典形式 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-10-27 09:44 |只看该作者 |倒序浏览
有一个文档(很大):
内容大致为:
(reply){
   ExportOrganizationDataResult =
      (ArrayOfPtrOrganization){
         PtrOrganization[] =
            (PtrOrganization){
               OrganizationNO = "00269904"
               OrganizationNameShort = "综合办公室厂处级"
               OrganizationName = "机械分公司综合办公室厂处级"
               SuperiorNo = "00269881"
               OrganizationLevel = "二级单位直属机构内设机构"
               OrganizationLevelCode = "3C"
               RegionCode = "070"
               Region = "1省"
               City = "1市"
               IsEmptyOrg = None
               OrgStartDate = "20161001"
               OrgEndDate = "99991231"
               CreateTime = "2005/10/22 12:47:09"
               LastUpdateTime = "2016/10/12 0:16:59"
            },
            (PtrOrganization){
               OrganizationNO = "00269905"
               OrganizationNameShort = "综合办公室中干"
               OrganizationName = "公司综合办公室中干"
               SuperiorNo = "00269881"
               OrganizationLevel = "二级单位直属机构内设机构"
               OrganizationLevelCode = "3C"
               RegionCode = "070"
               Region = "2省"
               City = "2市"
               IsEmptyOrg = None
               OrgStartDate = "20161001"
               OrgEndDate = "99991231"
               CreateTime = "2005/10/22 12:47:09"
               LastUpdateTime = "2016/10/12 0:16:59"
            },
             (PtrOrganization){
               OrganizationNO = "50095191"
               OrganizationNameShort = "40018队"
               OrganizationName = "西部40018队"
               SuperiorNo = "65118390"
               OrganizationLevel = "三级单位"
               OrganizationLevelCode = "40"
               RegionCode = "550"
               Region = "3省"
               City = "3市"
               IsEmptyOrg = None
               OrgStartDate = "20161001"
               OrgEndDate = "99991231"
               CreateTime = "2005/10/22 12:42:20"
               LastUpdateTime = "2016/10/13 0:16:59"
            },
      }
   isSuccessReceived = "S"
   strErrorDes = None
}

想截取其中PtrOrganization后{}之间的内容,将所有{}中的内容存成字典形式放到一个list中,大致如:[{OrganizationNO:"00269904",OrganizationNameShort :"综合办公室厂处级",后面的省略},{OrganizationNO: "00269905"},{OrganizationNO:"50095191"}]
怎么处理?
如果是python处理呢?


论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
2 [报告]
发表于 2016-10-27 11:46 |只看该作者
你这处理结果看着好像 json 格式

论坛徽章:
0
3 [报告]
发表于 2016-10-27 12:55 |只看该作者
回复 2# sunzhiguolu

是从webservice 中读取的,与json还是有差别

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
4 [报告]
发表于 2016-10-27 13:08 |只看该作者

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my ($idx, $rhData, @aData, $id, $val) = (0, {});
  5. while (<DATA>){
  6.     if (my $state = /\bPtrOrganization\)\{/ .. /\},/){
  7.         next if (/\BOrganization/);
  8.         if ($state =~ /E/){
  9.             $idx++;
  10.             next;
  11.         }
  12.         if (/(\w+)\s*=\s*((")?(?(3)[^"]+"|\S+))/){
  13.             ($id, $val) = ($1, $2);
  14.             push (@{$rhData->{$idx}}, "$id:$val");
  15.         }
  16.     }
  17. }

  18. $idx = 0;
  19. foreach (map {$rhData->{$_}} sort keys %$rhData){
  20.     $aData[$idx++] = "{" . join (',', @$_) . "}";
  21. }

  22. print "[", join (",", @aData), "]\n";


  23. __DATA__
  24. (reply){
  25.    ExportOrganizationDataResult =
  26.       (ArrayOfPtrOrganization){
  27.          PtrOrganization[] =
  28.             (PtrOrganization){
  29.                OrganizationNO = "00269904"
  30.                OrganizationNameShort = "综合办公室厂处级"
  31.                OrganizationName = "机械分公司综合办公室厂处级"
  32.                SuperiorNo = "00269881"
  33.                OrganizationLevel = "二级单位直属机构内设机构"
  34.                OrganizationLevelCode = "3C"
  35.                RegionCode = "070"
  36.                Region = "1省"
  37.                City = "1市"
  38.                IsEmptyOrg = None
  39.                OrgStartDate = "20161001"
  40.                OrgEndDate = "99991231"
  41.                CreateTime = "2005/10/22 12:47:09"
  42.                LastUpdateTime = "2016/10/12 0:16:59"
  43.             },
  44.             (PtrOrganization){
  45.                OrganizationNO = "00269905"
  46.                OrganizationNameShort = "综合办公室中干"
  47.                OrganizationName = "公司综合办公室中干"
  48.                SuperiorNo = "00269881"
  49.                OrganizationLevel = "二级单位直属机构内设机构"
  50.                OrganizationLevelCode = "3C"
  51.                RegionCode = "070"
  52.                Region = "2省"
  53.                City = "2市"
  54.                IsEmptyOrg = None
  55.                OrgStartDate = "20161001"
  56.                OrgEndDate = "99991231"
  57.                CreateTime = "2005/10/22 12:47:09"
  58.                LastUpdateTime = "2016/10/12 0:16:59"
  59.             },
  60.              (PtrOrganization){
  61.                OrganizationNO = "50095191"
  62.                OrganizationNameShort = "40018队"
  63.                OrganizationName = "西部40018队"
  64.                SuperiorNo = "65118390"
  65.                OrganizationLevel = "三级单位"
  66.                OrganizationLevelCode = "40"
  67.                RegionCode = "550"
  68.                Region = "3省"
  69.                City = "3市"
  70.                IsEmptyOrg = None
  71.                OrgStartDate = "20161001"
  72.                OrgEndDate = "99991231"
  73.                CreateTime = "2005/10/22 12:42:20"
  74.                LastUpdateTime = "2016/10/13 0:16:59"
  75.             },
  76.       }
  77.    isSuccessReceived = "S"
  78.    strErrorDes = None
  79. }

复制代码



论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [报告]
发表于 2016-10-27 13:27 |只看该作者
本帖最后由 jason680 于 2016-10-27 13:30 编辑

回复 1# hope1234567hope

$ awk -vs="[" '/},/{print s"}";s=c=P=""}P{sub(" *= *",":");sub("^ +","");s=s c $0;c=","}/\(PtrOrganization\){/{s=s C "{";P=1;C=","}END{print "]"}' FILE
[{OrganizationNO:"00269904",OrganizationNameShort:"综合办公室厂处级",OrganizationName:"机械分公司综合办公室厂处级",SuperiorNo:"00269881",OrganizationLevel:"二级单位直属机构内设机构",OrganizationLevelCode:"3C",RegionCode:"070",Region:"1省",City:"1市",IsEmptyOrg:None,OrgStartDate:"20161001",OrgEndDate:"99991231",CreateTime:"2005/10/22 12:47:09",LastUpdateTime:"2016/10/12 0:16:59"}
,{OrganizationNO:"00269905",OrganizationNameShort:"综合办公室中干",OrganizationName:"公司综合办公室中干",SuperiorNo:"00269881",OrganizationLevel:"二级单位直属机构内设机构",OrganizationLevelCode:"3C",RegionCode:"070",Region:"2省",City:"2市",IsEmptyOrg:None,OrgStartDate:"20161001",OrgEndDate:"99991231",CreateTime:"2005/10/22 12:47:09",LastUpdateTime:"2016/10/12 0:16:59"}
,{OrganizationNO:"50095191",OrganizationNameShort:"40018队",OrganizationName:"西部40018队",SuperiorNo:"65118390",OrganizationLevel:"三级单位",OrganizationLevelCode:"40",RegionCode:"550",Region:"3省",City:"3市",IsEmptyOrg:None,OrgStartDate:"20161001",OrgEndDate:"99991231",CreateTime:"2005/10/22 12:42:20",LastUpdateTime:"2016/10/13 0:16:59"}
]


论坛徽章:
0
6 [报告]
发表于 2016-11-06 15:29 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2018-01-06 16:35:38
7 [报告]
发表于 2016-11-06 18:02 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP