python中无delimeters文本文件的解析

2024-03-29 12:42:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要以下文件的帮助; 这是带有sampleline的myrecord(没有分隔符)

AD03A010125UNITADREESSUPTO25LENGTH0215ADDRESS2WITH15RECORDLENTh0310WANCHAI

在上述记录中,AD03A01是常见的

01---字段标记

25——字段长度

UNITADDRESSUPTO25LENGTH-----记录长度为25的地址行1

02----字段标记

15——字段长度

记录长度------地址行2,长度15

03---字段标记

10——字段长度

WANCHAI---城市名称,长度10

所以我需要它输出如下:

ADDRESSLINE1,ADDRESSLINE2,CITY


Tags: 文件标记名称city地址记录分隔符addressline2
1条回答
网友
1楼 · 发布于 2024-03-29 12:42:44

你可以这样做,把一行一行地读

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为要迭代的字符串创建一个生成器。它读取固定长度的数据(字段标记和字段长度),然后用它来读取可变长度的数据(地址中的字段)。当没有其他字符串时,它将停止处理该字符串并将其格式化为逗号分隔的行。你知道吗

相关问题 更多 >