[python]数据整理,将取得的众多的沪深龙虎榜数据整一整

将昨日取得的众多的沪深龙虎榜数据整一整

提取文件夹内所有抓取下来的沪深龙虎榜数据,整理出沪深两市(含中小创)涨幅榜股票及前5大买入卖出资金净值,保存到csv文件

再手动使用数据透视表进行统计

原始数据:

整理后数据:

代码如下(如果觉得对于炒股又用,敬请使用):

  1 #coding=utf-8
  2 
  3 import re
  4 import os
  5 import time
  6 import datetime
  7 
  8 def writeFile(file,stocks,BS,day):
  9     for s in stocks:
 10         allfile.write('\n')
 11         allfile.write(day
 12                       +',"\''+s['code']
 13                       +'","'+s['name']
 14                       +'",'+str(float(BS[s['code']]['buy'])-float(BS[s['code']]['sell']))
 15                       +','+BS[s['code']]['buy']
 16                       +','+BS[s['code']]['sell']
 17                       +','+s['偏离值']
 18                       +',"'+s['成交量']
 19                       +'","'+s['成交金额(万元)']+'"')
 20 
 21         '''
 22         allfile.write(day
 23                       +",'"+s["code"]
 24                       +"','"+s["name"]
 25                       +"',"+str(float(BS[s["code"]]["buy"])-float(BS[s["code"]]["sell"]))
 26                       +","+BS[s["code"]]["buy"]
 27                       +","+BS[s["code"]]["sell"]
 28                       +","+s["偏离值"]
 29                       +",'"+s["成交量"]
 30                       +"','"+s["成交金额(万元)"]+"'")
 31         '''
 32         
 33 path=r'./files'
 34 #path=r'./a'
 35 files = os.listdir(path)
 36 files.sort()
 37 
 38 nowDayStr = ''
 39 now = datetime.datetime.now()
 40 nowStr = now.strftime("%Y-%m-%d")
 41 
 42 allfile = open(r'./沪深龙虎榜统计_'+nowStr+'.csv','w')
 43 allfile.write('"日期","代码","名称","净流入流出","流入","流出","偏离值","成交量","成交金额(万元)"')
 44 for f in files:
 45     if(os.path.isfile(path+'/'+f) &
 46        f.endswith('.txt')):
 47         #print(path+'/'+f.replace('.txt',''))
 48         a = f.replace('.txt','').split('_')
 49         print('读取文件:'+path+'/'+f)
 50         '''
 51         if(nowDayStr!=a[0]):
 52             #print('a')
 53         else:
 54             #print('b')
 55             nowDayStr = a[0]
 56         '''
 57         nowDayStr = a[0]
 58         
 59         f=open(path+'/'+f,'rt')
 60         infos = f.readlines()
 61         f.close()
 62 
 63         if(a[1]=='上证'):
 64             #continue #test jump
 65             #上证
 66             readStocks = 1
 67             readBS = 0
 68             readBuy = 0
 69             readSell = 0
 70             nowStock = ''
 71             stocks = []
 72             BS = dict()
 73             buy = 0
 74             sell = 0
 75             for info in infos:
 76                 
 77                 info = re.sub('\ +', '_',info)
 78                 info = re.sub('\n', '',info)
 79                 
 80                 #print('line:' +info)
 81                 if(readStocks==1 and
 82                    info.startswith('_2')):
 83                     break
 84                 if(readStocks==1 and
 85                    (not info.startswith('_证券代码:')) and
 86                    info.startswith('_(')):
 87                     
 88                     tmp = info.split('_')
 89                     dictTmp = {'code':tmp[2],'name':tmp[3],'偏离值':tmp[4],'成交量':tmp[5],'成交金额(万元)':tmp[6]}
 90                     stocks.append(dictTmp)
 91                     
 92                 elif(readStocks==1 and
 93                      info.startswith('_证券代码:')):
 94                     
 95                     readStocks = 0
 96                     readBS = 1
 97                     #continue
 98 
 99                 if(readBS==1 and
100                    info.startswith('_证券代码')):
101                     tmp = info.split('_')
102                     #print('code:'+tmp[2])
103                     nowStock = tmp[2]
104                     readBS = 0
105                     readBuy = 1
106                     continue
107                 
108                 if(readBuy == 1 and
109                    info.startswith('_(') and
110                    (not info.startswith('_卖出'))):
111                     tmp = info.split('_')
112                     buy = buy + float(tmp[3])
113                     #print('buy:'+str(buy))
114                 elif(readBuy == 1 and
115                    info.startswith('_卖出')):
116                     readBuy = 0
117                     readSell = 1
118                     continue
119                 
120                 if(readSell == 1 and
121                    info.startswith('_(') and
122                    ((not info.startswith('_2')) or
123                    (not info.startswith('_证券')))):
124                     tmp = info.split('_')
125                     sell = sell + float(tmp[3])
126                     #print('sell:'+str(sell))
127                 elif(readSell == 1 and
128                    (info.startswith('_2') or
129                    info.startswith('_证券'))):
130                     readSell = 0
131                     if(info.startswith('_证券')):
132                         readBS = 1
133                         #dictTmp = {nowStock:{'buy':str(buy),'sell':str(sell)}}
134                         BS[nowStock]={'buy':str(buy),'sell':str(sell)};
135                         buy = 0
136                         sell = 0
137 
138                         if(readBS==1 and
139                            info.startswith('_证券代码')):
140                             tmp = info.split('_')
141                             #print('code:'+tmp[2])
142                             nowStock = tmp[2]
143                             readBS = 0
144                             readBuy = 1
145                             continue
146                         
147                     else:
148                         #dictTmp = {nowStock:{'buy':str(buy),'sell':str(sell)}}
149                         BS[nowStock]={'buy':str(buy),'sell':str(sell)};
150                         #write to doc
151                         #print(stocks[0]['成交金额(万元)'])
152                         #print(BS)
153                         
154                         writeFile(allfile,stocks,BS,nowDayStr);
155                         break;
156                     
157         else:
158             #深证,中小创
159             
160             readStocks = 0
161             #readBS = 0
162             readBuy = 0
163             readSell = 0
164             nowStock = ''
165             stocks = []
166             BS = dict()
167             buy = 0
168             sell = 0
169             threeBlank = 0
170             for info in infos:
171                 
172                     
173                 if(info.startswith('--') and readStocks==1 and len(stocks)>1):
174                     readStocks=1
175                     readSell=0
176                     BS[nowStock]={'buy':str(buy),'sell':str(sell)};
177                     buy = 0
178                     sell = 0
179                     writeFile(allfile,stocks,BS,nowDayStr);
180                     break;
181                 
182                 #print('-----'+info)
183                 if(threeBlank==3):
184                     threeBlank = 0
185                     haveBreaked = True
186                 else:
187                     haveBreaked = False
188                 
189                 info = re.sub('\ +', '_',info)
190                 info = re.sub('\n', '',info)
191                 
192                 #print('line:' +info)
193                 if(info == ''):
194                     threeBlank = threeBlank + 1
195                     continue
196                 if((not info.startswith('日涨幅偏离值达到7%的前五只证券')) and
197                    readStocks==0 and readBuy==0 and readSell==0):
198                     continue
199                 elif(readStocks==0 and readBuy==0 and readSell==0):
200                     
201                     if(info.endswith('')):
202                         
203                         break
204                     readStocks=1
205                     continue
206                 
207                 if(#haveBreaked and
208                    readStocks==1 and
209                    len(info.split('(代码'))>1):
210 
211                     if(info.startswith('--')):
212                         #print(stocks)
213                         #print(BS)
214                         writeFile(allfile,stocks,BS,nowDayStr);
215                         break;
216                     #print('1'+info)
217                     code = info.split('(代码')[1].split(')')[0]
218                     name = info.split('(代码')[0]
219                     plz = info.split('涨幅偏离值:')[1].split('_')[0]
220                     cjl = info.split('成交量:')[1].split('_')[0]
221                     cje = info.split('成交金额:_')[1]#.split('万元')[0]
222                     nowStock = code
223                     dictTmp = {'code':code,'name':name,'偏离值':plz,'成交量':cjl,'成交金额(万元)':cje}
224                     stocks.append(dictTmp)
225                     #print(dictTmp)
226                     readStocks = 0
227                     readBuy = 1
228                     continue
229 
230                 if(readBuy == 1 and info!='' and
231                    (not info.startswith('买入金额最大的前5名')) and
232                    (not info.startswith('营业部或交易单元名称')) ):
233                     #print('1'+info)
234                     if(info.startswith('卖出金额最大的前5名')):
235                         readBuy=0
236                         readSell=1
237                         continue
238                     else:
239                         buy = buy + float(info.split('_')[1]) - float(info.split('_')[2])
240                         continue
241 
242                 if(readSell == 1 and info!='' and
243                    (not info.startswith('营业部或交易单元名称')) ):
244                     #print('2'+info)
245                     
246                     if(info.startswith('--')):
247                         readStocks=1
248                         readSell=0
249                         
250                         #dictTmp = {nowStock:{'buy':str(buy),'sell':str(sell)}}
251                         #print(nowStock)
252                         BS[nowStock]={'buy':str(buy),'sell':str(sell)};
253                         
254                         buy = 0
255                         sell = 0
256                         #print(stocks)
257                         #print(BS)
258                         writeFile(allfile,stocks,BS,nowDayStr);
259                         break;
260                         
261                     if(len(info.split('代码'))>1):
262                         readStocks=1
263                         readSell=0
264                         
265                         #dictTmp = {nowStock:{'buy':str(buy),'sell':str(sell)}}
266                         #print(nowStock)
267                         BS[nowStock]={'buy':str(buy),'sell':str(sell)};
268                         
269                         buy = 0
270                         sell = 0
271 
272                         #read code
273                         #print('2'+info)
274                         code = info.split('(代码')[1].split(')')[0]
275                         name = info.split('(代码')[0]
276                         plz = info.split('涨幅偏离值:')[1].split('_')[0]
277                         cjl = info.split('成交量:')[1].split('_')[0]
278                         cje = info.split('成交金额:_')[1]#.split('万元')[0]
279                         nowStock = code
280                         dictTmp = {'code':code,'name':name,'偏离值':plz,'成交量':cjl,'成交金额(万元)':cje}
281                         stocks.append(dictTmp)
282                         #print(dictTmp)
283                         readStocks = 0
284                         readBuy = 1
285                         continue
286                         
287                     else:
288                         sell = sell - float(info.split('_')[1]) + float(info.split('_')[2])
289                         continue
290                 
291         #break
292 
293 
294 allfile.close();
295 print('统计完成!'+'文件:'+'./沪深龙虎榜统计_'+nowStr+'.csv')

 

转载于:https://www.cnblogs.com/wangxinsheng/p/4852367.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1619298.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

攻防演练期间一次对某企业的渗透测试

免责声明 由于传播、利用本文章说黑客所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者说黑客不为此承担任何责任,一旦造成后果请自行承担! 前言 某次攻防演练中,主办方只提供了目标…

应用TortoiseSVN的SubWCRev管理VisualStudio C#项目编译版本号

1、拷贝Porperties目录下的文件AssemblyInfo.cs生成副本AssemblyInfo.template.cs, 作为版本管理的模板文件。 2、修改模板文件中的想要管理的版本号信息 // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.5.0.$WCREV$")]//0.9.5…

c#之反射详解

总目录 文章目录 总目录一、反射是什么?1、C#编译运行过程2、反射与元数据3、反射的优缺点 二、反射的使用1、反射相关的类和命名空间1、System.Type类的应用2、System.Activator类的应用3、System.Reflection.Assembly类的应用4、System.Reflection.Module类的应用…

9. 解谜游戏

目录 题目 Description Input Notes 思路 暴力方法 递归法 注意事项 C代码(递归法) 关于DFS 题目 Description 小张是一个密室逃脱爱好者,在密室逃脱的游戏中,你需要解开一系列谜题最终拿到出门的密码。现在小张需要打…

【Windows10】利用分区助手扩展C盘分区

文章目的:   在开始对C盘进行空间分配时,配额空间过小,后续使用希望扩展C盘的空间大小 分区助手百度网盘下载链接:link   提取码:go16 1、下载安装好分区助手后打开,点击右上角Tools,再点击…

将C盘分区部分容量分配给其他分区

最近在学习OpenStack相关的实验,硬盘容量需要分配一百多两百个G。电脑用久了,不知不觉磁盘也将要挤满的感觉,除C盘外。就想着把C盘的一些容量转到E盘里。 以下为具体步骤: 下载分区工具 选择合适的分区工具下载。我使用的是 win1…

Windows: 如何调整C盘分区大小

最开始安装系统,做分区时给C分区的大小一般都太小,后面发现不够时却无从下手。 Windows磁盘管理做不了这个事。因为它只能扩展后面为空白的。但D分区已有数据,无法扩展。 所以,我们得借助另一个工具:DiskGenius. 操…

【八股】2023秋招八股复习笔记5(计算机网络-CN)

文章目录 八股目录目录1、应用层 & HTTP一些http题HTTPS 加密原理(问过)HTTP/1.1 新特性HTTP/2.0 与 RPC(问过)GET 和 POST 比较 2、传输层 & TCPTCP三次握手 & 四次挥手(问过)为什么每次TCP 连…

基于vue和element的脚手架【vue-element-admin 和vue-element-plus-admin 】

vue-element-admin vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现 介绍 | vue-element-adminA magical vue adminhttps://panjiachen.github.io/vue-element-admin-site/zh/guide/ vue-element-plus-admin vue-element-plus-admin 是一…

keras深度学习框架通过简单神经网络实现手写数字识别

背景 keras深度学习框架,并不是一个独立的深度学习框架,它后台依赖tensorflow或者theano。大部分开发者应该使用的是tensorflow。keras可以很方便的像搭积木一样根据模型搭出我们需要的神经网络,然后进行编译,训练,测试…

脑优化全集

1电脑优化全集 一、系统优化设置 1、删除Windows强加的附件: a.用记事本NOTEPAD修改sysoc.inf(在windiws/inf文件夹),用查找/替换功能,在查找框中输入,hide,7(一个英文逗号紧跟hide,一个英文逗…

个人永久性免费-Excel催化剂功能第49波-标准数据结构表转报表样式结果

中国的企业信息化,已经过去了20年,企业里也产生了大量的数据,IT技术的信息化管理辅助企业经营管理也已经得到广泛地认同,现在就连一个小卖部都可以有收银系统这样的信息化管理介入。但同时也有一个很现实的问题,不是所…

个人永久性免费-Excel催化剂功能第37波-把Sqlserver的强大分析函数拿到Excel中用...

本人一直钟情于使用Sqlserver数据库的一大原因是其提供了非常好用、高效的数据分析函数(窗口函数),可以在做数据清洗和数据分析场合等多个场景使用。只需简单的一个函数即可做出常规SQL语句很难以实现的效果。这么好用的函数,如今…

个人永久性免费-Excel催化剂功能第43波-文本处理类函数增强

Excel的函数有400多个,真正常用的50多个,而常有的文本处理类函数也不多,不是因为文本类处理简单,而是Excel真的有点挤牙膏式的每个版本更新那么几个小函数,普通用户等得急切,但实际上这些小函数&#xff0c…

个人永久性免费-Excel催化剂功能第30波-工作表快捷操作(批量创建、命名、排序、工作表目录)...

日常使用Excel过程中,最多的操作无外乎单元格和工作表的操作,单元格的操作在前面已经有详细的辅助功能提供,此篇提供工作表相关的操作。这两项的操作若能有提速,日常大量的工作叠加起来真是省下不少时间。 文章出处说明 原文在简书…

自定义镜像上传阿里云

目录 一、Docker制作jdk镜像 jdkv1.0版本 ① 编写Dockerfile文件 ② 执行Dockerfile文件,初次依赖镜像的时候会下载相应的镜像 ③ 查看镜像 ④ 创建并启动容器 二、alpine 制作jdk镜像 jdkv2.0的版本 1.alpine Linux 简介 2.基于 alpine 制作 j…

个人永久性免费-Excel催化剂功能第28波-工作薄瘦身,安全地减少非必要冗余

Excel催化剂在完善了数据分析场景的插件需求后,决定再补充一些日常绝大多数Excel用户同样可以使用到的小功能,欢迎小白入场,在不违背太多Excel最佳实践的前提下,Excel催化剂乐意为广大Excel用户们增添有价值和高频使用的快捷操作类…

计算机英语总结800,高三英语教师工作总结800字(通用5篇)

高三英语教师工作总结800字(通用5篇) 难忘的工作生活已经告一段落了,回顾这段时间的工作,相信你有很多感想吧,来为这一年的工作写一份工作总结吧。大家知道工作总结的格式吗?下面是小编精心整理的高三英语教师工作总结800字(通用5…

如何提高英语听力(内容摘自NECCS)+ 乘法表

乘法表 print(\n.join([ .join([%s*%s%-2s%(y,x,x*y) for y in range(1,x1)]) for x in range(1,10)])) 如何提高英语听力 很喜欢这篇关于提高英语听力的文章,所以收藏下来和大家一同分享一下 人走路时要用两条腿,没有任何人会觉得走路费劲。可如果让人…

张晓楠讲如何提高英语听力

张晓楠:现在是中央电视台财经频道(CCTV-2)的记者。曾任北京电视台青少频道主持人。原新浪网财经频道的主持人兼记者。毕业于美国哥伦比亚大学,主修金融方向,获公共管理硕士学位;曾在纽约摩根大通银行、瑞士信贷投资银行…