Xlsxwriter中是否有csv.DictWriter?

我有一个这样的程序:

我读了一些信息,而不是把它放到字典里,然后我把这些字典追加到一个列表中,所以我有一个字典列表…

我正在做的是:使用csv函数,csv.DictWriter和创build三个不同的文件。

我正在寻找,我发现了一个名为xlsxwriter的模块,可以用来创build一个EXCEL工作簿。

我search了,但我找不到类似于Xlsxwriter中的DictWrite的解决scheme,有没有人知道是否有任何解决scheme?

我所做的是一个糟糕的解决方法,这并不令我满意。

如果有人有任何build议,我会很高兴。

这是我的代码:

#!/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文件。

以下是示例代码:

 >>> from collections import OrderedDict >>> import pyexcel as pe # csv support by default >>> import pyexcel.ext.xlsx # for xlsx format support, pip install pyexcel-xlsx >>> # import pyexcel.ext.xls # for xls format support, pip install pyexcel-xls >>> # import pyexcel.ext.ods # for xls format support, pip install pyexcel-ods >>> sample_dict = OrderedDict() >>> sample_dict.update({"Column 1": [1,2,3,4,5]}) >>> sample_dict.update({"Column 2": [6,7,8,9,10]}) >>> pe.save_as(adict=sample_dict, out_file="your_file.xlsx") >>> pe.save_as(adict=sample_dict, out_file="your_file.csv") >>> # pe.save_as(adict=sample_dict, out_file="your_file.xls") >>> # pe.save_as(adict=sample_dict, out_file="your_file.ods")