小白求指导-使用封装简化代码
题目描述文本提取数据.txt:
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月
要求:
一、第1段话,分别拿出下面的营业收入、归属母公司所有者的净利润、扣除非经常性损益后归属于母公司所有者净利润,格式为元组,(日期,名称,数值,单位),格式化成2017-9-30,存入到list中
二、拿出第2段话的注册资本,也就是 (2015年,注册资本,7,900.00,美元),也存入一的list中
题目来源及自己的思路
虽然以完成要求,但被告知还是有改进的空间,奈何技术浅薄不知该如何使用 封装 进行改进
相关代码
以下是目前的代码:
**文件数据提取部分:**
#--coding:utf-8--
class Extract():
def __init__(self, result):
self.result = result #result = 传入一个需要打开的文件名称
def extract2(self):
file = open(self.result.decode('utf-8'), 'r')
key = file.read().decode('gbk')
return key
**数据操作部分:**
#--coding:utf-8--
import re
class Processing():
def __init__(self, result):
self.result = result
def processing(self):
key = self.result
print "\n" + key + "\n"
list = []
date = input("请输入统一格式日期")
sonList1 = [date]
sonList2 = [date]
sonList3 = [date]
sonList4 = []
file = open('文本提取数据.txt'.decode('utf-8'), 'r')
key = file.read().decode('gbk')
pattern = (u'([\d,.]+)万')
matcher = re.findall(pattern, key)
pass
pattern1 = (u'营业收入')
matcher1 = re.search(pattern1, key)
sonList1.append(matcher1.group())
sonList1.append(matcher[0])
sonList1.append('万元')
sonList1 = tuple(sonList1)
list.append(sonList1)
pass
pattern2 = (u'归属于母公司所有者的净利润')
matcher2 = re.search(pattern2, key)
sonList2.append(matcher2.group())
sonList2.append(matcher[1])
sonList2.append('万元')
sonList2 = tuple(sonList2)
list.append(sonList2)
pass
pattern3 = (u'扣除非经常性损益后归属于母公司所有者净利润')
matcher3 = re.search(pattern3, key)
sonList3.append(matcher3.group())
sonList3.append(matcher[2])
sonList3.append('万元')
sonList3 = tuple(sonList3)
list.append(sonList3)
pass
pattern4 = (u'2015年')
matcher4 = re.search(pattern4, key)
pattern5 = (u'注册资本')
matcher5 = re.search(pattern5, key)
sonList4.append(matcher4.group())
sonList4.append(matcher5.group())
sonList4.append(matcher[3])
sonList4.append('美元')
sonList4 = tuple(sonList4)
list.append(sonList4)
for i in range(0, 4):
print "\n"
for j in list[i]:
print j,
模块调用部分:
#--coding:utf-8--
import extract
import dataProcessing
a = input("需打开的文件名")
getData = extract.Extract(a)
c = getData.extract2()
operating = dataProcessing.Processing(c)
print operating.processing()
#'文本提取数据.txt' '2017-09-30'
你期待的结果是什么?实际看到的错误信息又是什么?
使用封装对代码进行简化,使数据操作部分不再那么亢杂