如何从这种表格中解析出数据?
本帖最后由 luofeiyu_cu 于 2014-04-19 14:04 编辑我复制黏贴后就是这样的格式,另外我打开这个股票软件的F10资料的文件夹中,发现有很多txt文件,打开后就是这样的显示格式
请问,股票软件是通过什么方式将它显示的格式很好的样子?就像附件一样。
┌─────────┬───────┬─────────┬───────┐
|网上发行日期 | 2012-10-26|上市日期 | 2012-11-02|
├─────────┼───────┼─────────┼───────┤
|发行方式 |网上发行、网下|每股面值(元) | 1.0000|
| |配售 | | |
├─────────┼───────┼─────────┼───────┤
|发行量(万股) | 1500.00|每股发行价(元) | 2.5800|
├─────────┼───────┼─────────┼───────┤
|发行费用(万元) | 898.82|发行总市值(万元)| 3870.00|
├─────────┼───────┼─────────┼───────┤
|募集资金净额(万元)| 2971.18|上市首日开盘价(元)| -|
├─────────┼───────┼─────────┼───────┤
|上市首日收盘价(元)| -|二级市场配售中签率| -|
| | |(%) | |
├─────────┼───────┼─────────┼───────┤
|每股摊薄市盈率 | 7.1700|每股加权市盈率 | -|
├─────────┼───────┴─────────┴───────┤
|主承销商 |招商证券股份有限公司 |
├─────────┼─────────────────────────┤
|保荐人 |招商证券股份有限公司 |
└─────────┴─────────────────────────┘
另外一个问题,这样的表格中,如何解析出数据?
这是报表啊,你用ultraedit打开,在view 下勾上oem character set显示会好些
提取数据的话,建议你还是从数据从哪里来的找吧。
有人可以做吗?这个可以付款的。 我来试一下,有奖励吗,呵呵!
# coding=gbk
table = '''┌─────────┬───────┬─────────┬───────┐
|网上发行日期 | 2012-10-26|上市日期 | 2012-11-02|
├─────────┼───────┼─────────┼───────┤
|发行方式 |网上发行、网下|每股面值(元) | 1.0000|
| |配售 | | |
├─────────┼───────┼─────────┼───────┤
|发行量(万股) | 1500.00|每股发行价(元) | 2.5800|
├─────────┼───────┼─────────┼───────┤
|发行费用(万元) | 898.82|发行总市值(万元)| 3870.00|
├─────────┼───────┼─────────┼───────┤
|募集资金净额(万元)| 2971.18|上市首日开盘价(元)| -|
├─────────┼───────┼─────────┼───────┤
|上市首日收盘价(元)| -|二级市场配售中签率| -|
| | |(%) | |
├─────────┼───────┼─────────┼───────┤
|每股摊薄市盈率 | 7.1700|每股加权市盈率 | -|
├─────────┼───────┴─────────┴───────┤
|主承销商 |招商证券股份有限公司 |
├─────────┼─────────────────────────┤
|保荐人 |招商证券股份有限公司 |
└─────────┴─────────────────────────┘'''
#print table,"ZZZ"
data = []
linetype = None
for line in table.split("\n"):
if not line.startswith("|"):
linetype = None
continue
zz = line.split("|")
if linetype is None:
if len(zz) == 6:
data.append(.strip(),zz.strip()])
data.append(.strip(),zz.strip()])
if len(zz) == 4:
data.append(.strip(),zz.strip()])
else:
if len(zz) == 6:
data[-2] += zz.strip()
data[-2] += zz.strip()
data[-1] += zz.strip()
data[-1] += zz.strip()
if len(zz) == 4:
data[-1] += zz.strip()
data[-1] += zz.strip()
linetype = "same"
for name,value in data:
print name.decode("gbk").encode("utf_8"),":=",value.decode("gbk").encode("utf_8")结果:网上发行日期 := 2012-10-26
上市日期 := 2012-11-02
发行方式 := 网上发行、网下配售
每股面值(元) := 1.0000
发行量(万股) := 1500.00
每股发行价(元) := 2.5800
发行费用(万元) := 898.82
发行总市值(万元) := 3870.00
募集资金净额(万元) := 2971.18
上市首日开盘价(元) := -
上市首日收盘价(元) := -
二级市场配售中签率(%) := -
每股摊薄市盈率 := 7.1700
每股加权市盈率 := -
主承销商 := 招商证券股份有限公司
保荐人 := 招商证券股份有限公司
可以哈,还有其他的格式要解析,一起100块吧。
要求:提供并讲解全部代码。
格式1:
单位(万股) 2014-01-092012-12-31 2011-12-312010-12-31
─────────────────────────────────────
总股本 952074.57 512335.04 512335.04 348501.38
有限售条件股份 394484.38 201799.24 201799.17 37965.53
其他内资持股 394484.38 201799.24 201799.17 37965.53
境内法人股 394481.40 201797.31 201797.31 37963.65
高管股 2.98 1.93 1.86 1.88
无限售条件股份 557590.19 310535.80 310535.87 310535.85
流通A股 557590.19 310535.80 310535.87 310535.85
实际流通A股 557590.19 310535.80 310535.87 310535.85
─────────────────────────────────────
2.格式2
┌───────────┬─────┬─────┬─────┬─────┐
|财务指标 |2013-09-30|2012-12-31|2011-12-31|2010-12-31|
├───────────┼─────┼─────┼─────┼─────┤
|审计意见 |未经审计|标准无保留|标准无保留|标准无保留|
| | | 意见| 意见| 意见|
├───────────┼─────┼─────┼─────┼─────┤
|净利润(万元) | 616021.89|1255118.24| 962487.53| 728312.70|
|净利润增长率(%) | 21.2668| 30.4036| 32.1531| 36.6508|
|加权净资产收益率(%) | 9.3100| 21.4500| 19.8300| 17.7900|
|资产负债比率(%) | 79.5362| 78.3163| 77.0997| 74.6861|
├───────────┼─────┼─────┼─────┼─────┤
|净利润现金含量(%) | -195.7846| 29.6861| 35.2153| 30.7183|
|基本每股收益(元) | 0.5600| 1.1400| 0.8800| 0.6600|
|每股收益-扣除(元) | 0.5560| 1.1400| 0.8700| 0.6400|
|每股收益-摊薄(元) | 0.5593| 1.1415| 0.8754| 0.6624|
├───────────┼─────┼─────┼─────┼─────┤
|每股资本公积金(元) | 0.8076| 0.7898| 0.8043| 0.7994|
|每股未分配利润(元) | 2.8026| 2.4272| 1.7221| 1.2251|
|每股净资产(元) | 6.1982| 5.8049| 4.8174| 4.0200|
|每股经营现金流量(元)| -1.0951| 0.3389| 0.3083| 0.2030|
|经营活动现金净流量增长|245.5259| 9.9289| 51.4992|-75.8222|
|率(%) | | | | |
└───────────┴─────┴─────┴─────┴─────┘
反正都是那个文件里面的数据,我先去上课,等会见。
回复 5# luofeiyu_cu
代码放在这里,钱就免了吧,交个朋友吧。希望我不是在给你做作业,那就没意思了。
# coding=gbk
table1 = '''┌─────────┬───────┬─────────┬───────┐
|网上发行日期 | 2012-10-26|上市日期 | 2012-11-02|
├─────────┼───────┼─────────┼───────┤
|发行方式 |网上发行、网下|每股面值(元) | 1.0000|
| |配售 | | |
├─────────┼───────┼─────────┼───────┤
|发行量(万股) | 1500.00|每股发行价(元) | 2.5800|
├─────────┼───────┼─────────┼───────┤
|发行费用(万元) | 898.82|发行总市值(万元)| 3870.00|
├─────────┼───────┼─────────┼───────┤
|募集资金净额(万元)| 2971.18|上市首日开盘价(元)| -|
├─────────┼───────┼─────────┼───────┤
|上市首日收盘价(元)| -|二级市场配售中签率| -|
| | |(%) | |
├─────────┼───────┼─────────┼───────┤
|每股摊薄市盈率 | 7.1700|每股加权市盈率 | -|
├─────────┼───────┴─────────┴───────┤
|主承销商 |招商证券股份有限公司 |
├─────────┼─────────────────────────┤
|保荐人 |招商证券股份有限公司 |
└─────────┴─────────────────────────┘'''
table2='''单位(万股) 2014-01-092012-12-31 2011-12-312010-12-31
─────────────────────────────────────
总股本 952074.57 512335.04 512335.04 348501.38
有限售条件股份 394484.38 201799.24 201799.17 37965.53
其他内资持股 394484.38 201799.24 201799.17 37965.53
境内法人股 394481.40 201797.31 201797.31 37963.65
高管股 2.98 1.93 1.86 1.88
无限售条件股份 557590.19 310535.80 310535.87 310535.85
流通A股 557590.19 310535.80 310535.87 310535.85
实际流通A股 557590.19 310535.80 310535.87 310535.85
─────────────────────────────────────'''
table3='''┌───────────┬─────┬─────┬─────┬─────┐
|财务指标 |2013-09-30|2012-12-31|2011-12-31|2010-12-31|
├───────────┼─────┼─────┼─────┼─────┤
|审计意见 |未经审计|标准无保留|标准无保留|标准无保留|
| | | 意见| 意见| 意见|
├───────────┼─────┼─────┼─────┼─────┤
|净利润(万元) | 616021.89|1255118.24| 962487.53| 728312.70|
|净利润增长率(%) | 21.2668| 30.4036| 32.1531| 36.6508|
|加权净资产收益率(%) | 9.3100| 21.4500| 19.8300| 17.7900|
|资产负债比率(%) | 79.5362| 78.3163| 77.0997| 74.6861|
├───────────┼─────┼─────┼─────┼─────┤
|净利润现金含量(%) | -195.7846| 29.6861| 35.2153| 30.7183|
|基本每股收益(元) | 0.5600| 1.1400| 0.8800| 0.6600|
|每股收益-扣除(元) | 0.5560| 1.1400| 0.8700| 0.6400|
|每股收益-摊薄(元) | 0.5593| 1.1415| 0.8754| 0.6624|
├───────────┼─────┼─────┼─────┼─────┤
|每股资本公积金(元) | 0.8076| 0.7898| 0.8043| 0.7994|
|每股未分配利润(元) | 2.8026| 2.4272| 1.7221| 1.2251|
|每股净资产(元) | 6.1982| 5.8049| 4.8174| 4.0200|
|每股经营现金流量(元)| -1.0951| 0.3389| 0.3083| 0.2030|
|经营活动现金净流量增长|245.5259| 9.9289| 51.4992|-75.8222|
|率(%) | | | | |
└───────────┴─────┴─────┴─────┴─────┘'''
def parse_table1(table):
data = []
linetype = None # 记录是否是同一个格子
for line in table.split("\n"): # 取出每一行
if not line.startswith("|"): # 记录不同格的行分割
linetype = None
continue
zz = line.split("|") # 分割有数据的行
if linetype is None:
if len(zz) == 6: # 每行两个数据
data.append(.strip(),zz.strip()]) # 取数据,祛除前后空格
data.append(.strip(),zz.strip()])
if len(zz) == 4: # 每行一个数据
data.append(.strip(),zz.strip()])
else:
if len(zz) == 6:
data[-2] += zz.strip() #同一行格子,记录在前面的数据中
data[-2] += zz.strip()
data[-1] += zz.strip()
data[-1] += zz.strip()
if len(zz) == 4:
data[-1] += zz.strip()
data[-1] += zz.strip()
linetype = "same" # 标记同一行格子
return data
def parse_table2(table):
import re
names = []
data = []
for lineno, line in enumerate(table.split("\n")): # 取出每一行,并记录行号
if line.startswith('─'): # 去掉横线
continue
if lineno == 0:
names=re.split("\s+",line.strip())
else:
data.append(re.split("\s+",line.strip()))
return names,data
def parse_table3(table):
data = []
linetype = None # 记录是否是同一个格子
for line in table.split("\n"): # 取出每一行
if not line.startswith("|"): # 记录不同格的行分割
linetype = None
continue
zz = line.split("|") # 分割有数据的行
if linetype is None:
data.append(])#取中间有数据的部分
else:
for dno,d in enumerate(zz):
data[-1] += d.strip()
if ')' in line :
linetype = None # 行内有括号,标记为新一行
else:
linetype = "same" # 标记同一行格子
return data
print "Table 1:"
for name,value in parse_table1(table1):
print name.decode("gbk").encode("utf_8"),":=",value.decode("gbk").encode("utf_8") # 打印输出,注意合适的编码根据你的显示终端
print "\nTable 2:"
names,data = parse_table2(table2)
for name in names:
print name.decode("gbk").encode("utf_8"),",",
for d in data :
name = d
values = d
print name.decode("gbk").encode("utf_8"),":=",
for value in values:
print value.decode("gbk").encode("utf_8"),",",
print "\nTable 3:"
data = parse_table3(table3)
for d in data:
name = d
values = d
print name.decode("gbk").encode("utf_8"),":=",
for value in values:
print value.decode("gbk").encode("utf_8"),",",
结果:Table 1:
网上发行日期 := 2012-10-26
上市日期 := 2012-11-02
发行方式 := 网上发行、网下配售
每股面值(元) := 1.0000
发行量(万股) := 1500.00
每股发行价(元) := 2.5800
发行费用(万元) := 898.82
发行总市值(万元) := 3870.00
募集资金净额(万元) := 2971.18
上市首日开盘价(元) := -
上市首日收盘价(元) := -
二级市场配售中签率(%) := -
每股摊薄市盈率 := 7.1700
每股加权市盈率 := -
主承销商 := 招商证券股份有限公司
保荐人 := 招商证券股份有限公司
Table 2:
单位(万股) , 2014-01-09 , 2012-12-31 , 2011-12-31 , 2010-12-31 ,
总股本 := 952074.57 , 512335.04 , 512335.04 , 348501.38 ,
有限售条件股份 := 394484.38 , 201799.24 , 201799.17 , 37965.53 ,
其他内资持股 := 394484.38 , 201799.24 , 201799.17 , 37965.53 ,
境内法人股 := 394481.40 , 201797.31 , 201797.31 , 37963.65 ,
高管股 := 2.98 , 1.93 , 1.86 , 1.88 ,
无限售条件股份 := 557590.19 , 310535.80 , 310535.87 , 310535.85 ,
流通A股 := 557590.19 , 310535.80 , 310535.87 , 310535.85 ,
实际流通A股 := 557590.19 , 310535.80 , 310535.87 , 310535.85 ,
Table 3:
财务指标 := 2013-09-30 , 2012-12-31 , 2011-12-31 , 2010-12-31 ,
审计意见 := 未经审计 , 标准无保留意见 , 标准无保留意见 , 标准无保留意见 ,
净利润(万元) := 616021.89 , 1255118.24 , 962487.53 , 728312.70 ,
净利润增长率(%) := 21.2668 , 30.4036 , 32.1531 , 36.6508 ,
加权净资产收益率(%) := 9.3100 , 21.4500 , 19.8300 , 17.7900 ,
资产负债比率(%) := 79.5362 , 78.3163 , 77.0997 , 74.6861 ,
净利润现金含量(%) := -195.7846 , 29.6861 , 35.2153 , 30.7183 ,
基本每股收益(元) := 0.5600 , 1.1400 , 0.8800 , 0.6600 ,
每股收益-扣除(元) := 0.5560 , 1.1400 , 0.8700 , 0.6400 ,
每股收益-摊薄(元) := 0.5593 , 1.1415 , 0.8754 , 0.6624 ,
每股资本公积金(元) := 0.8076 , 0.7898 , 0.8043 , 0.7994 ,
每股未分配利润(元) := 2.8026 , 2.4272 , 1.7221 , 1.2251 ,
每股净资产(元) := 6.1982 , 5.8049 , 4.8174 , 4.0200 ,
每股经营现金流量(元) := -1.0951 , 0.3389 , 0.3083 , 0.2030 ,
经营活动现金净流量增长率(%) := 245.5259 , 9.9289 , 51.4992 , -75.8222 ,
:mrgreen: 赞!回复 6# Hadron74
我在琢磨这段代码,请问如果有
网上发行日期 := 2012-10-26
上市日期 := 2012-11-02
发行方式 := 网上发行、网下配售
每股面值(元) := 1.0000
发行量(万股) := 1500.00
每股发行价(元) := 2.5800
发行费用(万元) := 898.82
发行总市值(万元) := 3870.00
募集资金净额(万元) := 2971.18
上市首日开盘价(元) := -
上市首日收盘价(元) := -
二级市场配售中签率(%) := -
每股摊薄市盈率 := 7.1700
每股加权市盈率 := -
主承销商 := 招商证券股份有限公司
保荐人 := 招商证券股份有限公司
如何将它写成
http://cupic.img168.net/bbsfile/forum/201404/19/135218rh844lz8h53ecrbj.jpg
解析后生成html,用table约束下就会很好看了 回复 1# luofeiyu_cu
看你这么勤奋,我就帮你把解析表和创建表都搞出来了。
from os import linesep
#解析表
formatData =[]
temp = []
table = '''┌─────────┬───────┬─────────┬───────┐
|网上发行日期 | 2012-10-26|上市日期 | 2012-11-02|
├─────────┼───────┼─────────┼───────┤
|发行方式 |网上发行、网下|每股面值(元) | 1.0000|
| |配售 | | |
├─────────┼───────┼─────────┼───────┤
|发行量(万股) | 1500.00|每股发行价(元) | 2.5800|
├─────────┼───────┼─────────┼───────┤
|发行费用(万元) | 898.82|发行总市值(万元)| 3870.00|
├─────────┼───────┼─────────┼───────┤
|募集资金净额(万元)| 2971.18|上市首日开盘价(元)| -|
├─────────┼───────┼─────────┼───────┤
|上市首日收盘价(元)| -|二级市场配售中签率| -|
| | |(%) | |
├─────────┼───────┼─────────┼───────┤
|每股摊薄市盈率 | 7.1700|每股加权市盈率 | -|
├─────────┼───────┴─────────┴───────┤
|主承销商 |招商证券股份有限公司 |
├─────────┼─────────────────────────┤
|保荐人 |招商证券股份有限公司 |
└─────────┴─────────────────────────┘
'''
for i in table.split('\n'):
if i.startswith('┌'):
continue
if i.startswith('├') or i.startswith('└'):
count = 0
lenTemp = len(temp)
while count < lenTemp:
if count%2 == 1:
formatData.append(temp.strip() + '=' + temp.strip())
count += 1
temp = []
if i.startswith('|'):
splitData =
if temp:
lenSplitData = len(splitData)
count = 0
while count < lenSplitData:
temp += splitData
count += 1
else:
temp = splitData
for i in formatData:
print i
#创建表
fo = formatData
lenFo = len(fo)
cellCount = 4
cellWidth = 20
tabBegLineSep = '┌' + ('─' * (cellWidth/2+1)+ '┬') * (cellCount - 1)+ ('─' * (cellWidth/2+1)) + '┐'
tabLineSep = '├' + ('─' * (cellWidth/2+1)+ '┼') * (cellCount - 1)+ ('─' * (cellWidth/2+1)) + '┤'
tabEndLineSep = '└' + ('─' * (cellWidth/2+1) + '┴') * (cellCount - 1)+ ('─' * (cellWidth/2+1)) + '┘'
sepLine = (cellCount * cellWidth+ cellCount + 9) * '-'
lineSum = 0
fmat = '%%-%ds' % cellWidth
while lineSum < lenFo:
if lineSum == 0:
print tabBegLineSep
else:
print tabLineSep
line = []
for i in xrange(cellCount / 2):
#name, value = fo.split('=')
line.extend(fo.strip().split('='))
lineSum += 1
#计算最大的单元格包含的字符个数
maxCellChar = max()
#计算单元格占据的行数
if maxCellChar % cellWidth == 0:
lineCellCount = maxCellChar / cellWidth
else:
lineCellCount = maxCellChar / cellWidth + 1
#打印每个单元格数据
chrBeg = 0
chrEnd = cellWidth
for i in xrange(lineCellCount):
for j in line:
print '|',
print fmat % j,
chrBeg += cellWidth
chrEnd += cellWidth
print '|'
if lineSum== lenFo:
print tabEndLineSep
页:
[1]