我找到了答案。而不是写作我需要写作家。
所以正确的代码是这样的:
#!/usr/bin/env python
import csv
def process_cdr():
f = open(files)
for lines in f:
if 'ERS.VA' == lines[39:45]:
d = { 'mnc' : lines[13: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))
}
if '02' in d['mnc']:
mnc02.append(d)
elif '03' in d['mnc']:
mnc03.append(d)
elif '04' in d['mnc']:
mnc04.append(d)
else:
pass
else:
pass
mnc02 =[]
mnc03 =[]
mnc04 =[]
files = 'teste.txt'
process_cdr()
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.txt'
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.txt'
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)
谢谢大家,特别是lapinkoira。 我在这里搜索了很多,但我仍然无法理解我做错了什么。
以下是代码:
#!/usr/bin/env python
import csv
def process_cdr():
f = open(files)
for lines in f:
if 'ERS.VA' == lines[39:45]:
d = { 'mnc' : lines[13: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))
}
if '02' in d['mnc']:
mnc02.append(d)
elif '03' in d['mnc']:
mnc03.append(d)
elif '04' in d['mnc']:
mnc04.append(d)
else:
pass
else:
pass
mnc02 =[]
mnc03 =[]
mnc04 =[]
files = 'teste.txt'
process_cdr()
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.writerow(mnc02)
mnc_03_path = 'tac_mnc03.txt'
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.writerow(mnc03)
mnc_04_path = 'tac_mnc04.txt'
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.writerow(mnc04)
当我打印字段名称时,例如。 keys_mnc02,我得到:['tac-lb','TAC_DEC','mnc','tac-hb','TAC']
错误始于:
ValueError:dict包含不在字段名中的字段:{'tac-lb':'7e','TAC_DEC':'33150','mnc':'02','tac-hb':'81',' TAC':'817e'},{'tac-lb':'7e','TAC_DEC':'33150','mnc':'02','tac-hb':'81','TAC':' 817e'},{'tac-lb':'EE','TAC_DEC':'32750','mnc':'02','tac-hb':'7F','TAC':'7FEE'}, {'tac-lb':'FC','TAC_DEC':'32252','mnc':'02','tac-hb':'7D','TAC':'7DFC'},{'tac- lb':'C3','TAC_DEC':'32451','mnc':'02','tac-hb':'7E','TAC':'7EC3'},{'tac-lb':' B4','TAC_DEC':'32180','mnc':'02','tac-hb':'7D','TAC':'7DB4'},{'tac-lb':'B9',' TAC_DEC':'32185','mnc':'02','tac-hb':'7D','TAC':'7DB9'},{'tac-lb':'4F','TAC_DEC':' 33103','mnc':'02','tac-hb':'81','TAC':'814F'},{'tac-lb':'4D','TAC_DEC':'33101',' mnc':'02','tac-hb':'81','TAC':'814D'},{'tac-lb':'4E','TAC_DEC':'33102','mnc':' 02','tac-hb':'81','TAC':'814E'},{'tac-lb':'50','TAC_DEC':'33104','mnc':'02',' tac-hb':'81','TAC':'8150'},{'tac-lb':'51','TAC_DEC':'33105','mnc': '02','tac-hb':'81','TAC':'8151'},{'tac-lb':'52','TAC_DEC':'33106','mnc':'02', 'tac-hb':'81','TAC':'8152'},{'tac-lb':'7E','TAC_DEC':'39550','mnc':'02','tac-hb ':'9A','TAC':'9A7E'},{'tac-lb':'65','TAC_DEC':'38501','mnc':'02','tac-hb':'96 ',''TAC':'9665'},{'tac-lb':'66','TAC_DEC':'38502','mnc':'02','tac-hb':'96','TAC ':'9666'},{'tac-lb':'67','TAC_DEC':'38503','mnc':'02','tac-hb':'96','TAC':'9667 '},{'tac-lb':'68','TAC_DEC':'38504','mnc':'02','tac-hb':'96','TAC':'9668'},{ 'tac-lb':'69','TAC_DEC':'38505','mnc':'02','tac-hb':'96','TAC':'9669'},{'tac-lb ':'6A','TAC_DEC':'38506','mnc':'02','tac-hb':'96','TAC':'966A'},{'tac-lb':'6B ','TAC_DEC':'38507','mnc':'02','tac-hb':'96','TAC':'966B'},{'tac-lb':'6C','TAC_DEC ':''38508','mnc':'02','tac-hb':'96','TAC':'966C'},{'tac-lb':'6D','TAC_DEC':'38509 ','mnc':'02','tac-hb':'96','TAC':'966D'},{'tac-lb':'B1','TAC_DEC':'33201','mnc ':'02','tac-hb': '81','TAC':'81B1'},{'tac-lb':'B2','TAC_DEC':'33202','mnc':'02','tac-hb':'81', 'TAC':'81B2'},
等等。
任何人都可以帮助我吗?
谢谢!
答案 0 :(得分:0)
使用您提供的值,这对我有用:
In [23]: keys_mnc03
Out[23]: ['tac-lb', 'TAC_DEC', 'mnc', 'tac-hb', 'TAC']
mnc03 = huge list of dictionaries
with open("test.txt",'wb') as resultado:
dict_writer = csv.DictWriter(resultado, keys_mnc03)
dict_writer.writeheader()
for d in mnc03:
dict_writer.writerow(d)
您还可以使用此代码检查字段是否在列表中:
for e in mnc03:
for key in e.keys():
if key not in keys_mnc03:
print "key %s not in keys" % key