如何解析python中没有分隔符的文本文件

时间:2016-10-22 07:50:06

标签: python

我需要以下文件的帮助; 这是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

1 个答案:

答案 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进行迭代。它读取固定长度数据(字段标记和字段长度,然后使用它来读取可变长度数据(地址中的字段)。当没有剩余字符串时,它停止处理字符串并将它们格式化为以逗号分隔的行。