我需要以下文件的帮助; 这是mylineord with sampleline(no delimiters)
AD03A010125UNITADREESSUPTO25LENGTH0215ADDRESS2WITH15RECORDLENTh0310WANCHAI
在上面的记录中AD03A01是常见的
01
---字段标记
25
- 字段长度
UNITADDRESSUPTO25LENGTH
----- ADDRESSLINE 1,记录长度为25
02
----字段标记
15
- 字段长度
RECORDLENGTH --------- ADDRESS LINE2,长度为15
03
---字段标记
10
- 字段长度
WANCHAI
---城市名称长度为10
所以我需要输出如下:
ADDRESSLINE1,ADDRESSLINE2,CITY
答案 0 :(得分:1)
你可以这样做,以块的形式读取行
from itertools import islice
s = 'AD03A010125UNITADREESSUPTO25LENGTH0215ADDRESS2WITH15RECORDLENTh0310WANCHAI'
ss = iter(s)
if s.startswith('AD03A01'):
list(islice(ss, 7))
row = []
while True:
field_tag = ''.join(islice(ss, 2))
if not field_tag:
break
field_length = int(''.join(islice(ss, 2)))
field = ''.join(islice(ss, field_length))
row.append(field)
formatted_line = ','.join(row)
这将为字符串创建一个生成器,以使用islice
进行迭代。它读取固定长度数据(字段标记和字段长度,然后使用它来读取可变长度数据(地址中的字段)。当没有剩余字符串时,它停止处理字符串并将它们格式化为以逗号分隔的行。