我有一个程序可以做到:
我读了一些信息,然后把它放到字典里,然后我把这些字典附加到一个列表中,这样我就有了一个字典列表。。。在
我所做的是:使用csv函数,csv.DictWriter创建三个不同的文件。在
我在搜索时发现了一个叫做xlsxwriter的模块,可以用来创建EXCEL工作簿。在
我搜索了一下,却找不到类似于Xlsxwriter的DictWrite的解决方案,有人知道有没有?在
我所做的只是一个糟糕的解决办法,并不能让我很满意。在
如果有人有什么建议,我会很高兴的。在
这是我的代码:
#!/usr/bin/env python
import csv, collections, xlsxwriter
def find_between( s, first, last ):
try:
start = s.index( first ) + len( first )
end = s.index( last, start )
return s[start:end]
except ValueError:
return "ERROR"
def process_tac_dump():
f = open(files)
for lines in f:
if 'ERS.VA' == lines[39:45]:
d = ( ('mnc', lines[12:15]),
('tac-lb', lines[52:54]),
('tac-hb', lines[61:63]),
('TAC', lines[61:63]+lines[52:54]),
('TAC_DEC', str(int(lines[61:63]+lines[52:54],16))),
('GGSN', find_between(lines,'vip-s11.', '.node.epc' )),
('ORDER', find_between(lines, 'IN NAPTR ', ' 65525')),
('Servicos', find_between(lines, 'x-3gpp-sgw:', '" "" topoff'))
)
d = collections.OrderedDict(d)
if '002' in d['mnc']:
if "ERROR" in d['GGSN']:
pass
elif "x-s11:x-s8-gtp" not in d['Servicos']:
mnc02.append(d)
#Procedimento de configuração novo
delete_tac_naptrrecord_mnc02.append('delete naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -where container=GPRS')
create_naptrrecord_mnc02.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order=10;preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s8-gtp";regexp="";replacement=topoff.vip-s11.GPRJO2.node.epc.mnc002.mcc724.3gppnetwork.org.;container=GPRS')
create_naptrrecord_mnc02.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order='+d['ORDER']+';preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s5-gtp";regexp="";replacement=topoff.vip-s11.'+d['GGSN']+'.node.epc.mnc002.mcc724.3gppnetwork.org.;container=GPRS')
#Procedimento de FallBack
fallback_naptrrecord_mnc02.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order=10;preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s8-gtp";regexp="";replacement=topoff.vip-s5s8.GPRJO2.node.epc.mnc002.mcc724.3gppnetwork.org.;container=GPRS')
fallback_naptrrecord_mnc02.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order='+d['ORDER']+';preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s5-gtp";regexp="";replacement=topoff.vip-s5s8.'+d['GGSN']+'.node.epc.mnc002.mcc724.3gppnetwork.org.;container=GPRS')
#fallback_naptrrecord_mnc02.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order='+d['ORDER']+';preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s5-gtp";regexp="";replacement=topoff.vip-s5s8.'+d['GGSN']+'.node.epc.mnc003.mcc724.3gppnetwork.org.;container=GPRS')
#fallback_naptrrecord_mnc02.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order='+d['ORDER']+';preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s5-gtp";regexp="";replacement=topoff.vip-s5s8.'+d['GGSN']+'.node.epc.mnc004.mcc724.3gppnetwork.org.;container=GPRS')
elif '003' in d['mnc']:
if "ERROR" in d['GGSN']:
pass
elif "x-s11:x-s8-gtp" not in d['Servicos']:
mnc03.append(d)
#Procedimento de configuração novo
delete_tac_naptrrecord_mnc03.append('delete naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -where container=GPRS')
create_naptrrecord_mnc03.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order=10;preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s8-gtp";regexp="";replacement=topoff.vip-s11.GPSPO2.node.epc.mnc003.mcc724.3gppnetwork.org.;container=GPRS')
create_naptrrecord_mnc03.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order='+d['ORDER']+';preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s5-gtp";regexp="";replacement=topoff.vip-s11.'+d['GGSN']+'.node.epc.mnc003.mcc724.3gppnetwork.org.;container=GPRS')
#Procedimento de FallBack
fallback_naptrrecord_mnc03.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order=10;preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s8-gtp";regexp="";replacement=topoff.vip-s5s8.GPSPO2.node.epc.mnc003.mcc724.3gppnetwork.org.;container=GPRS')
#fallback_naptrrecord_mnc03.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order='+d['ORDER']+';preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s5-gtp";regexp="";replacement=topoff.vip-s5s8.'+d['GGSN']+'.node.epc.mnc002.mcc724.3gppnetwork.org.;container=GPRS')
fallback_naptrrecord_mnc03.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order='+d['ORDER']+';preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s5-gtp";regexp="";replacement=topoff.vip-s5s8.'+d['GGSN']+'.node.epc.mnc003.mcc724.3gppnetwork.org.;container=GPRS')
#fallback_naptrrecord_mnc03.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order='+d['ORDER']+';preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s5-gtp";regexp="";replacement=topoff.vip-s5s8.'+d['GGSN']+'.node.epc.mnc004.mcc724.3gppnetwork.org.;container=GPRS')
elif '004' in d['mnc']:
if "ERROR" in d['GGSN']:
pass
elif "x-s11:x-s8-gtp" not in d['Servicos']:
mnc04.append(d)
#Procedimento de configuração novo
delete_tac_naptrrecord_mnc04.append('delete naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -where container=GPRS')
create_naptrrecord_mnc04.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order=10;preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s8-gtp";regexp="";replacement=topoff.vip-s11.GPRJO2.node.epc.mnc004.mcc724.3gppnetwork.org.;container=GPRS')
create_naptrrecord_mnc04.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order='+d['ORDER']+';preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s5-gtp";regexp="";replacement=topoff.vip-s11.'+d['GGSN']+'.node.epc.mnc004.mcc724.3gppnetwork.org.;container=GPRS')
#Procedimento de FallBack
fallback_naptrrecord_mnc04.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order=10;preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s8-gtp";regexp="";replacement=topoff.vip-s5s8.GPRJO2.node.epc.mnc004.mcc724.3gppnetwork.org.;container=GPRS')
#fallback_naptrrecord_mnc04.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order='+d['ORDER']+';preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s5-gtp";regexp="";replacement=topoff.vip-s5s8.'+d['GGSN']+'.node.epc.mnc002.mcc724.3gppnetwork.org.;container=GPRS')
#fallback_naptrrecord_mnc04.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order='+d['ORDER']+';preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s5-gtp";regexp="";replacement=topoff.vip-s5s8.'+d['GGSN']+'.node.epc.mnc003.mcc724.3gppnetwork.org.;container=GPRS')
fallback_naptrrecord_mnc04.append('create naptrrecord tac-lb'+d['tac-lb']+'.tac-hb'+d['tac-hb']+'.tac.epc.mnc'+d['mnc']+'.mcc724.3gppnetwork.org. -set order='+d['ORDER']+';preference=65525;flags="a";service="x-3gpp-sgw:x-s11:x-s5-gtp";regexp="";replacement=topoff.vip-s5s8.'+d['GGSN']+'.node.epc.mnc004.mcc724.3gppnetwork.org.;container=GPRS')
#Listas para configuração S11
delete_tac_naptrrecord_mnc02 = []
delete_tac_naptrrecord_mnc03 = []
delete_tac_naptrrecord_mnc04 = []
create_naptrrecord_mnc02 = []
create_naptrrecord_mnc03 = []
create_naptrrecord_mnc04 = []
create_node_arecord_vip_s11 = []
#Listas para Fallback
fallback_naptrrecord_mnc02 = []
fallback_naptrrecord_mnc03 = []
fallback_naptrrecord_mnc04 = []
fallback_delete_tac_naptrrecord_mnc02 = []
fallback_delete_tac_naptrrecord_mnc03 = []
fallback_delete_tac_naptrrecord_mnc04 = []
mnc02 =[]
mnc03 =[]
mnc04 =[]
files = 'teste.txt'
workbook = xlsxwriter.Workbook('TAC_DUMP.xlsx')
worksheet_script_mnc02 = workbook.add_worksheet('MNC02')
worksheet_script_mnc03 = workbook.add_worksheet('MNC03')
worksheet_script_mnc04 = workbook.add_worksheet('MNC04')
worksheet_mnc02 = workbook.add_worksheet('MNC02_TAC')
worksheet_mnc03 = workbook.add_worksheet('MNC03_TAC')
worksheet_mnc04 = workbook.add_worksheet('MNC04_TAC')
#Processa a função principal
process_tac_dump()
mnc_02_path = 'tac_mnc02.csv'
keys_mnc02 = mnc02[0].keys()
with open(mnc_02_path,'wb') as resultado:
dict_writer = csv.DictWriter(resultado, keys_mnc02)
dict_writer.writeheader()
dict_writer.writerows(mnc02)
mnc_03_path = 'tac_mnc03.csv'
keys_mnc03 = mnc03[0].keys()
with open(mnc_03_path,'wb') as resultado:
dict_writer = csv.DictWriter(resultado, keys_mnc03)
dict_writer.writeheader()
dict_writer.writerows(mnc03)
mnc_04_path = 'tac_mnc04.csv'
keys_mnc04 = mnc04[0].keys()
with open(mnc_04_path,'wb') as resultado:
dict_writer = csv.DictWriter(resultado, keys_mnc04)
dict_writer.writeheader()
dict_writer.writerows(mnc04)
mnc_02_gambiarra = []
with open (mnc_02_path) as f:
for lines in f:
mnc_02_gambiarra.append(lines)
mnc_03_gambiarra = []
with open (mnc_03_path) as f:
for lines in f:
mnc_03_gambiarra.append(lines)
mnc_04_gambiarra = []
with open (mnc_04_path) as f:
for lines in f:
mnc_04_gambiarra.append(lines)
worksheet_script_mnc02.write_column('A1', create_naptrrecord_mnc02)
worksheet_script_mnc03.write_column('A1', create_naptrrecord_mnc03)
worksheet_script_mnc04.write_column('A1', create_naptrrecord_mnc04)
worksheet_mnc02.write_column('A1', mnc_02_gambiarra)
worksheet_mnc03.write_column('A1', mnc_03_gambiarra)
worksheet_mnc04.write_column('A1', mnc_04_gambiarra)
workbook.close()
请试用我的包装器库pyexcel,它不能直接帮助您,但是库提供了一个读、写csv和xlsx文件的接口。在
下面是示例代码:
相关问题 更多 >
编程相关推荐