我有一个固定宽度的文件,我正在使用Python,但在尝试加载文件时,由于未读取十六进制值\ x9f而出现错误。这是通过强制文件的加载为latin-1来解决的,但是当我尝试替换\ x9f值时它不起作用,除非我写出另一个看起来效率不高的文件。
有人可以建议更好的方法吗?
import pprint
import re, collections
import platform
#### INPUTS ####
layout = [
('ID', 0, 11),
('FIN-STATEMENT-IND', 83 , 84 ) ,
('RECENT-FIN-STAT-AGE', 84 , 86 ) ,
('FAILED-TO-FILE-IND', 86 , 87 ) ,
('FIN-STAT-OVDUE-IND', 87 , 88 ) ,
('NET-WORTH' , 88, 99 ) ,
]
headerdict = {}
#### OPEN ####
with open('uk_dcl_mrg.txt', 'r+', encoding='latin-1') as f:
for line in f:
f.write(line.replace('\x9f', '?'))
ct = 0
for line in f:
ct += 1
#### OUTOUT ####
for i in layout: ## Loop to create dictionary
headerdict[i[0]] = line[i[1]:i[2]]
print ('Sort by keys:')
for key in sorted(headerdict.keys()):
print ("%s: %s" % (key, headerdict[key]))
print(headerdict)
# print(platform.python_version())
if ct >= 1:
break
如果我添加下面的行,那么我可以写入第二个文件然后从中创建字典它工作正常但我不想创建第二个文件。
with open('uk_dcl_mrg_out.txt', 'r+', encoding='latin-1') as fo: