免费注册 查看新帖 |

Chinaunix

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

Python中信息摘取,非诚勿进,谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-05-06 09:28 |只看该作者 |倒序浏览
附件中有一文本文档,哪位大神可以把TI这行的信息读取出来,有的TI可能包括两行,再把RP和C1的信息都读取出来,保存在文档中。

1-500.rar

638.5 KB, 下载次数: 12

论坛徽章:
5
巨蟹座
日期:2014-08-28 18:12:342015年迎新春徽章
日期:2015-03-04 10:01:4415-16赛季CBA联赛之江苏
日期:2016-04-28 09:43:3115-16赛季CBA联赛之吉林
日期:2016-06-22 10:34:4315-16赛季CBA联赛之山西
日期:2016-08-16 16:29:55
2 [报告]
发表于 2015-05-06 10:55 |只看该作者
本帖最后由 Linux_manne 于 2015-05-06 11:02 编辑

这样??
T1 包括2行 是指 缩进吗?如果是 可以这样:
  1. f = open('1-500.txt','r')

  2. while True:
  3.         current = f.readline()
  4.         if current.startswith('TI'):
  5.                 after = f.readline()
  6.                 if after.startswith(' '):
  7.                         print current,after
  8.                 else:
  9.                         print current

  10.         if current.startswith('RP'):
  11.                 print current

  12.         if current.startswith('C1'):
  13.                 print current       
复制代码
如果T1 下面缩进不止2行 用下面:
  1. f = open('1-500.txt','r')

  2. while True:
  3.         current = f.readline()
  4.         if current.startswith('TI'):
  5.                 print current
  6.                 while True:
  7.                         after = f.readline()
  8.                         if after.startswith(' '):
  9.                                 print after
  10.                         else:
  11.                                 break

  12.         if current.startswith('RP'):
  13.                 print current

  14.         if current.startswith('C1'):
  15.                 print current
复制代码

论坛徽章:
4
白羊座
日期:2013-11-05 10:26:09冥斗士
日期:2015-11-17 14:19:55白银圣斗士
日期:2015-11-17 15:13:0815-16赛季CBA联赛之新疆
日期:2016-04-01 09:10:58
3 [报告]
发表于 2015-05-11 11:29 |只看该作者
回复 1# 瑞安3980
使用正则表达式会比较快:
  1. def read_data_from_file(filename):
  2.     result = ""
  3.     with open(filename, "r") as handle:
  4.         for line in handle.readlines():
  5.             result += line
  6.     return result

  7. def main():
  8.     """
  9.     start up entry for python script
  10.     """
  11.     import re
  12.     data = read_data_from_file("1-500.txt")
  13.     results = re.findall("^\TI\s[\w\W]+?$(?:\s{3}[\w\W]+?$)*", data, re.M)

  14.     # 选择一个输出下
  15.     print results[2]

  16. if __name__ == "__main__":
  17.     main()
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP