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

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

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

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

原始数据:

整理后数据:

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

1#coding=utf-823importre4importos5importtime6importdatetime78defwriteFile(file,stocks,BS,day):9forsinstocks:10allfile.write('\n')11allfile.write(day12+',"\''+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['成交金额(万元)']+'"')2021'''22allfile.write(day23+",'"+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'''3233path=r'./files'34#path=r'./a'35files =os.listdir(path)36files.sort()3738nowDayStr =''39now =datetime.datetime.now()40nowStr = now.strftime("%Y-%m-%d")4142allfile = open(r'./沪深龙虎榜统计_'+nowStr+'.csv','w')43allfile.write('"日期","代码","名称","净流入流出","流入","流出","偏离值","成交量","成交金额(万元)"')44forfinfiles:45if(os.path.isfile(path+'/'+f) &46f.endswith('.txt')):47#PRint(path+'/'+f.replace('.txt',''))48a = f.replace('.txt','').split('_')49print('读取文件:'+path+'/'+f)50'''51if(nowDayStr!=a[0]):52#print('a')53else:54#print('b')55nowDayStr = a[0]56'''57nowDayStr =a[0]5859f=open(path+'/'+f,'rt')60infos =f.readlines()61f.close()6263if(a[1]=='上证'):64#continue #test jump65#上证66readStocks = 167readBS =068readBuy =069readSell =070nowStock =''71stocks =[]72BS =dict()73buy =074sell =075forinfoininfos:7677info = re.sub('\ +','_',info)78info = re.sub('\n','',info)7980#print('line:' +info)81if(readStocks==1and82info.startswith('_2')):83

break84if(readStocks==1and85(notinfo.startswith('_证券代码:'))and86info.startswith('_(')):8788tmp = info.split('_')89dictTmp = {'code':tmp[2],'name':tmp[3],'偏离值':tmp[4],'成交量':tmp[5],'成交金额(万元)':tmp[6]}90stocks.append(dictTmp)9192elif(readStocks==1and93info.startswith('_证券代码:')):9495readStocks =096readBS = 197#continue9899if(readBS==1and100info.startswith('_证券代码')):101tmp = info.split('_')102#print('code:'+tmp[2])103nowStock = tmp[2]104readBS =0105readBuy = 1106continue107108if(readBuy == 1and109info.startswith('_(')and110(notinfo.startswith('_卖出'))):111tmp = info.split('_')112buy = buy + float(tmp[3])113#print('buy:'+str(buy))114elif(readBuy == 1and115info.startswith('_卖出')):116readBuy =0117readSell = 1118continue119120if(readSell == 1and121info.startswith('_(')and122((notinfo.startswith('_2'))or123(notinfo.startswith('_证券')))):124tmp = info.split('_')125sell = sell + float(tmp[3])126#print('sell:'+str(sell))127elif(readSell == 1and128(info.startswith('_2')or129info.startswith('_证券'))):130readSell =0131if(info.startswith('_证券')):132readBS = 1133#dictTmp = {nowStock:{'buy':str(buy),'sell':str(sell)}}134BS[nowStock]={'buy':str(buy),'sell':str(sell)};135buy =0136sell =0137138if(readBS==1and139info.startswith('_证券代码')):140tmp = info.split('_')141#print('code:'+tmp[2])142nowStock = tmp[2]143readBS =0144readBuy = 1145continue146147else:148#dictTmp = {nowStock:{'buy':str(buy),'sell':str(sell)}}149BS[nowStock]={'buy':str(buy),'sell':str(sell)};150#write to doc151#print(stocks[0]['成交金额(万元)'])152#print(BS)153154writeFile(allfile,stocks,BS,nowDayStr);155

break;156157else:158#深证,中小创159160readStocks =0161#readBS = 0162readBuy =0163readSell =0164nowStock =''165stocks =[]166BS =dict()167buy =0168sell =0169threeBlank =0170forinfoininfos:171172173if(info.startswith('--')andreadStocks==1andlen(stocks)>1):174readStocks=1175readSell=0176BS[nowStock]={'buy':str(buy),'sell':str(sell)};177buy =0178sell =0179writeFile(allfile,stocks,BS,nowDayStr);180

break;181182#print('-----'+info)183if(threeBlank==3):184threeBlank =0185haveBreaked =True186else:187haveBreaked =False188189info = re.sub('\ +','_',info)190info = re.sub('\n','',info)191192#print('line:' +info)193if(info ==''):194threeBlank = threeBlank + 1195continue196if((notinfo.startswith('日涨幅偏离值达到7%的前五只证券'))and197readStocks==0andreadBuy==0andreadSell==0):198continue199elif(readStocks==0andreadBuy==0andreadSell==0):200201if(info.endswith('无')):202203

break204readStocks=1205continue206207if(#haveBreaked and208readStocks==1and209len(info.split('(代码'))>1):210211if(info.startswith('--')):212#print(stocks)213#print(BS)214writeFile(allfile,stocks,BS,nowDayStr);215

break;216#print('1'+info)217code = info.split('(代码')[1].split(')')[0]218name = info.split('(代码')[0]219plz = info.split('涨幅偏离值:')[1].split('_')[0]220cjl = info.split('成交量:')[1].split('_')[0]221cje = info.split('成交金额:_')[1]#.split('万元')[0]222nowStock =code223dictTmp = {'code':code,'name':name,'偏离值':plz,'成交量':cjl,'成交金额(万元)':cje}224stocks.append(dictTmp)225#print(dictTmp)226readStocks =0227readBuy = 1228continue229230if(readBuy == 1andinfo!=''and231(notinfo.startswith('买入金额最大的前5名'))and232(notinfo.startswith('营业部或交易单元名称')) ):233#print('1'+info)234if(info.startswith('卖出金额最大的前5名')):235readBuy=0236readSell=1237continue238else:239buy = buy + float(info.split('_')[1]) - float(info.split('_')[2])240continue241242if(readSell == 1andinfo!=''and243(notinfo.startswith('营业部或交易单元名称')) ):244#print('2'+info)245246if(info.startswith('--')):247readStocks=1248readSell=0249250#dictTmp = {nowStock:{'buy':str(buy),'sell':str(sell)}}251#print(nowStock)252BS[nowStock]={'buy':str(buy),'sell':str(sell)};253254buy =0255sell =0256#print(stocks)257#print(BS)258writeFile(allfile,stocks,BS,nowDayStr);259

break;260261if(len(info.split('代码'))>1):262readStocks=1263readSell=0264265#dictTmp = {nowStock:{'buy':str(buy),'sell':str(sell)}}266#print(nowStock)267BS[nowStock]={'buy':str(buy),'sell':str(sell)};268269buy =0270sell =0271272#read code273#print('2'+info)274code = info.split('(代码')[1].split(')')[0]275name = info.split('(代码')[0]276plz = info.split('涨幅偏离值:')[1].split('_')[0]277cjl = info.split('成交量:')[1].split('_')[0]278cje = info.split('成交金额:_')[1]#.split('万元')[0]279nowStock =code280dictTmp = {'code':code,'name':name,'偏离值':plz,'成交量':cjl,'成交金额(万元)':cje}281stocks.append(dictTmp)282#print(dictTmp)283readStocks =0284readBuy = 1285continue286287else:288sell = sell - float(info.split('_')[1]) + float(info.split('_')[2])289continue290291#

break292293294allfile.close();295print('统计完成!'+'文件:'+'./沪深龙虎榜统计_'+nowStr+'.csv')

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航