免费注册 查看新帖 |

Chinaunix

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

文本信息处理,新手求助 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-02-24 15:17 |只看该作者 |倒序浏览
本帖最后由 jiangling_0103 于 2016-02-24 15:26 编辑

大家好,Python 新手,遇到下面的数据处理问题,还请大牛帮忙指点下如何处理比较合适

基础数据如下的:

每次提交的修改信息,会按照下面的形式来进行保存, 一个 repo 下可能会带上多个 commit 记录信息

我是想有什么好的方式,可以先将每个 repo 分成一个信息集合,然后再按照单个 repo 信息集合,把每个 commit 分成一个子集合,再对每个 commit 抽取相应的字段信息(如:Author,Date等) , 还请大牛们帮忙指点下思路的,多谢了


repo: device/sprd
commit 775ffdbcbd3e506b38fc5b57debc181e57d52654
Author: xxxx <xxxx>
Date:   Sun Feb 21 13:33:53 2016 +0800

    Bug #532015 xxxx
   
    [root cause  ] new features
    [changes     ] let EngineerMode can to write to /sys/class/net/seth_lte0/queues/rx-0/rps_cpus
    [side effects] no
    [self test   ] <9832><follow bug steps,test 5 times,pass>
    [reviewers   ] xxxx
    [change_type ] feature
    [tag_product ] common
   
    Change-Id: Icaa1e5ec8f3eea7b7912bf59595e4b0884bf65e3

scx35l/init.sc8830_base.rc |   18 ++++++++++++++++++
1 file changed, 18 insertions(+)

repo: kernel
commit fc82a44b8965994fa2340832770169ce0242656f
Author: xxxx <xxxx>
Date:   Mon Feb 22 19:02:45 2016 +0800

    Bug #524747  add otg function for sp9832a board
   
    [root cause  ] add  otg function for iea board
    [changes     ] arch/arm/boot/dts/
    [change_type ] bringup --> sprd_chip_support
    [tag_product ] common
    [side effects] no
    [self test   ] <sp9832a><adb pull/push ok, USB keypad OK>
    [reviewers   ] xxxx
   
    Change-Id: Ie054e5e3c9c4c770a40eccf4b43500a666663023

.../boot/dts/sprd-scx35l_sp9832a_3h10_5mvolte.dts  |    6 +++---
arch/arm/configs/sp9832a_3h10_5mvolte_defconfig    |    6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)

commit 35450fb6f5720b1f84698fc80d9df28035725a9d
Author: xxxx <xxxx>
Date:   Sun Feb 21 15:31:38 2016 +0800

    Bug #532015 [new feature] EngineerMode add a SethRps switch
   
    [root cause  ] new features
    [changes     ] EngineerMode add a SethRps switch
    [side effects] no
    [self test   ] <9832><follow bug steps,test 5 times,pass>
    [reviewers   ] xxxx
    [change_type ] feature
    [tag_product ] common
   
    Change-Id: I6fe8bb0e158617d8e1efefaed3b6d53b43eeef5e

res/values/strings.xml                             |    1 +
res/xml/pref_telephonytab.xml                      |    4 ++++
.../sprd/engineermode/BootCompletedReceiver.java   |    1 +
.../engineermode/telephony/TelephonyFragment.java  |   21 ++++++++++++++++++++
4 files changed, 27 insertions(+)


论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00
2 [报告]
发表于 2016-02-24 18:59 |只看该作者
大牛们还请帮忙啊

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00
3 [报告]
发表于 2016-02-25 09:59 |只看该作者
顶一个再~~

论坛徽章:
1
CU十四周年纪念徽章
日期:2015-12-16 18:25:16
4 [报告]
发表于 2016-02-25 11:04 |只看该作者
你要啥结果

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00
5 [报告]
发表于 2016-02-25 14:21 |只看该作者
类似附件中的,将各部分的数据保存在字典中的

论坛徽章:
11
2015年迎新春徽章
日期:2015-03-04 09:55:282017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之辽宁
日期:2016-12-15 10:24:1715-16赛季CBA联赛之佛山
日期:2016-11-30 09:04:2015-16赛季CBA联赛之江苏
日期:2016-04-29 15:56:1215-16赛季CBA联赛之同曦
日期:2016-04-12 13:21:182016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之山东
日期:2016-02-16 11:37:52每日论坛发贴之星
日期:2016-02-07 06:20:00程序设计版块每日发帖之星
日期:2016-02-07 06:20:0015-16赛季CBA联赛之新疆
日期:2018-01-09 16:25:37
6 [报告]
发表于 2016-03-01 14:03 |只看该作者
re正则表达式去看看

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
7 [报告]
发表于 2016-03-06 14:06 |只看该作者
这样行不行?
  1. #!python
  2. # -*- coding:utf-8 -*-

  3. import pprint

  4. file_name = 'a.txt'
  5. data      = dict()

  6. with open(file_name, 'r') as fh:

  7.     repo_name      = str()
  8.     space          = ' '
  9.     is_in_bug      = False
  10.     is_in_change   = False

  11.     for line in fh:
  12.         line = line.strip()
  13.         if not line: continue

  14.         if line.startswith('repo:'):
  15.             (__, repo_name) = line.split(sep=space, maxsplit=1)
  16.             data[repo_name] = dict()
  17.             is_in_change    = False

  18.         elif line.startswith('commit'):
  19.             (__, commit)            = line.split(sep=space, maxsplit=1)
  20.             data[repo_name][commit] = dict()
  21.             is_in_change            = False

  22.         elif line.startswith('Author:'):
  23.             (__, author)                      = line.split(sep=space, maxsplit=1)
  24.             data[repo_name][commit]['author'] = author
  25.         
  26.         elif line.startswith('Date:'):
  27.             (__, date) = line.split(sep=space, maxsplit=1)
  28.             data[repo_name][commit]['date'] = date
  29.         
  30.         elif line.startswith('Bug'):
  31.             (__, bug_id, bug_content)              = line.split(sep=space, maxsplit=2)
  32.             data[repo_name][commit]['bug_id']      = bug_id
  33.             data[repo_name][commit]['bug_content'] = bug_content + "\n"
  34.             is_in_bug                              = True

  35.         elif line.startswith('Change-Id:'):
  36.             (__, change_id)                           = line.split(sep=space, maxsplit=1)
  37.             data[repo_name][commit]['change_id']      = change_id
  38.             data[repo_name][commit]['change_content'] = str()
  39.             is_in_change                              = True
  40.             is_in_bug                                 = False
  41.         
  42.         else:
  43.             if is_in_bug: data[repo_name][commit]['bug_content'] += "{0}\n".format(line)

  44.             if is_in_change: data[repo_name][commit]['change_content'] += "{0}\n".format(line)
  45.    
  46.     pprint.pprint(data, width=200)
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP