使用不同记录布局的文件处理

时间:2015-02-05 01:58:57

标签: python

请你帮忙知道如何在python代码中执行文件处理,每个记录有不同的布局,并且有3种类型的记录布局。

Field-1和2将是常量,可以用作记录标识符,记录字段用','分隔符 -

分隔

记录类型记录结构

R1          ex - Id,Name1,Name2,Name3,Address{},Phones{}
R2          ex - Id,Year,Make,Model,Length
R3          ex - Id,Transactions{Trxn1,Trnx2,Trnx3,Trnx4}
R2          ex - Id,Name1,Name2,Name3,Address{},Phones{}
R2          ex - Id,Year,Make,Model,Length
R1          ex - Id,Transactions{Trxn1,Trnx2,Trnx3,Trnx4}

1 个答案:

答案 0 :(得分:1)

你的问题非常模糊,但以下内容可能会让你开始:

您可以在for循环中以字符串形式读取文件的每一行,然后使用fields = line.split(',')将其分解为可变长度的字段值列表。然后,您可以使用fields[0]fields[1]的值来确定您正在处理的类型记录,并根据需要处理剩余的字段值。

这里有一些代码显示了如何处理从文件中读取的行:

H2 = ['Id', 'Year', 'Make', 'Model', 'Length']

line = 'B42,2015,Ford,F-150,243.7'

fields = line.split(',')
record_id = fields[0][0]

if record_id == 'A':
    record = dict(zip(H1, fields))
    print('{Id}, {Name1}, {Name2}, {Name3}, {Address}, {Phones}'.format(**record))
elif record_id == 'B':
    record = dict(zip(H2, fields))
    print('{Id}, {Year}, {Make}, {Model}, {Length}'.format(**record))
elif record_id == 'C':
    pass  # ... etc

输出:

B42, 2015, Ford, F-150, 243.7