我有一个公司公司(英国公司注册处)使用的具有70年代旧格式的文件。
我继承了6年前编写的解析器,该解析器逐行处理,并根据一组条件从行中提取信息并将其插入字典中。
有一个奇怪的字符正在折行。
我将此行复制到新文件awk '{if(NR==33411) print $0}' PROD216_1950_ew_1.dat > broken
,并在vim中打开broken
。
证明<85>
是vim读取的奇怪字符。
结果是MAYFIELD
之后的所有内容都被换行。
相关行以下:
000376702103032986930001 1993010119941024 193709 0105<BARRY ALEXANDER<GROSVENOR<<<<MAYFIELD 3<41 PLANTATION ROAD<THE PEAK<<HONG KONG<BANK EXECUTIVE<BRITISH<<
在vim中成为
000376702103032986930001 1993010119941024 193709 0105<BARRY ALEXANDER<GROSVENOR<<<<MAYFIELD <85>3<41 PLANTATION ROAD<THE PEAK<<HONG KONG<BANK EXECUTIVE<BRITISH<<
我正在使用codecs
通过上下文管理器读取此文件,我认为这是解决问题的方法-
我有什么想念的吗? <85>
是什么?
with codecs.open(filepath,'r','utf-8') as fh:
for line in fh:
linetype = determine_line_type(line)
if linetype == 'header':
continue
elif linetype == 'company':
do stuff...
elif linetype == 'officer':
do stuff...