请问这种题目使用正则应该怎么样才能做得更好

题目描述

一、第1段话,分别拿出下面的营业收入、归属母公司所有者的净利润、扣除非经常性损益后归属于母公司所有者净利润,格式为元组,(日期,名称,数值,单位),格式化成2017-9-30,存入到list中

二、拿出第2段话的注册资本,也就是 (2015年,注册资本,7,900.00,美元),也存入一的list中

题目来源及自己的思路

文本内容:
1.公司2017年1-9月的营业收入、归属于母公司所有者的净利润和扣除非经常性损益后归属于母公司所有者净利润分别为98,768.99万元、14,079.98万元和13,649.00万元,较2016年1-9月分别同比增长10.27%、35.63%和20.30%,体现了公司良好的经营情况。
2.导致公司2015年管理费用较2014年增长较大、2016年管理费用较2015年下降的主要原因为:①2015年3月,公司注册资本由7,900.00万美元增加至9,161.256万美元,新增股东宁波领挈、宁波领荣、宁波领祺、宁波领鑫及宁波领禧为公司员工持股平台,根据公司2014年12月

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

#-*-coding:utf-8-*-
import re
import json

data = ['2017-9-30']
list = []
file = open(u'文本提取数据.txt')
key = file.read().decode('gbk')
print key
pattern = re.compile(u'(?<=1-9月).*(?=经营情况)')
matcher = re.search(pattern,key)
pass
pattern1 = re.compile(u'营业收入')
matcher1 = re.search(pattern1,matcher.group())
data.append(matcher1.group())
pass
pattern2 = re.compile(u'[0-9].*?(?=万元)')
matcher2 = re.search(pattern2,matcher.group())
data.append(matcher2.group())
data.append('万元')
data = tuple(data)
list.append(data)
pass
data2 = ['2017-9-30']
pattern3 = re.compile(u'归属于母公司所有者的净利润')
matcher3 = re.search(pattern3,matcher.group())
data2.append(matcher3.group())
pass
pattern4 = re.compile(u'(?<=万元、).*?(?=万元)')
matcher4 = re.search(pattern4,matcher.group())
data2.append(matcher4.group())
data2.append('万元')
data2 = tuple(data2)
list.append(data2)
pass
data3 = ['2017-9-30']
pattern5 = re.compile(u'扣除非经常性损益后归属于母公司所有者净利润')
matcher5 = re.search(pattern5,matcher.group())
data3.append(matcher5.group())
pass
pattern6 = re.compile(u'(?<=万元和).*?(?=万元)')
matcher6 = re.search(pattern6,matcher.group())
data3.append(matcher6.group())
data3.append('万元')
data3 = tuple(data3)
list.append(data3)
pass
pass
dataTwo = []
patternTwo = re.compile(u'(?<=导致).*')
matcherTwo = re.search(patternTwo,key)
pass
patternTwo1 = re.compile(u'2015年')
matcherTwo1 = re.search(patternTwo1,matcherTwo.group())
dataTwo.append(matcherTwo1.group())
pass
patternTwo2 = re.compile(u'注册资本')
matcherTwo2 = re.search(patternTwo2,matcherTwo.group())
dataTwo.append(matcherTwo2.group())
pass
patternTwo3 = re.compile(u'(?<=注册资本由).*?(?=万)')
matcherTwo3 = re.search(patternTwo3,matcherTwo.group())
dataTwo.append(matcherTwo3.group())
dataTwo.append('美元')
dataTwo = tuple(dataTwo)
list.append(dataTwo)
for i in range(0,4):
    print "\n"
    for j in list[i]:
        print j,

你期待的结果是什么?实际看到的错误信息又是什么?

虽然现在已经可以按照要求提取数据了,但是感觉这种提取方法太蠢了,应该怎么完善希望各路大佬可以指点迷津

阅读 1.3k
1 个回答

没太懂,下面写了一个匹配 金额的,做参考,第二段话,匹配资本同样可用,只需要取用第一项即可,年份以此类比

var str1 = '公司2017年1-9月的营业收入、归属于母公司所有者的净利润和扣除非经常性损益后归属于母公司所有者净利润分别为98,768.99万元、14,079.98万元和13,649.00万元,较2016年1-9月分别同比增长10.27%、35.63%和20.30%,体现了公司良好的经营情况';
str1.match(/([\d,.])+万元/g);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题