我正在做一个项目,我想使用 Python 解析文本文件。该文件由不同块格式的一些数据条目组成。当有新行时,会找到一个新条目。这就是我想要完成的:
- 跳过前几行(前 16 行)
- 第 16 行之后,有一个换行符开始新的数据输入
- 阅读以下几行,直到遇到新的换行符。每个单独的行都附加到一个称为数据的列表中。
- 该列表将被传递给处理进一步处理的函数。
- 重复步骤 3 和 4,直到文件中没有更多数据
以下是该文件的示例:
Header Info
More Header Info
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
Line9
Line10
Line11
Line12
Line13
MoreInfo MoreInfo MoreInfo MoreInfo MoreInfo
MoreInfo2 MoreInfo2 MoreInfo2 MoreInfo2 MoreInfo2 MoreInfo2
MoreInfo3 MoreInfo3 MoreInfo3 MoreInfo3 MoreInfo3
MoreInfo4 MoreInfo4
FieldName1 0001 0001
FieldName1 0002 0002
FieldName1 0003 0003
FieldName1 0004 0004
FieldName1 0005 0005
FieldName2 0001 0001
FieldName3 0001 0001
FieldName4 0001 0001
FieldName5 0001 0001
FieldName6 0001 0001
MoreInfo MoreInfo MoreInfo MoreInfo MoreInfo
MoreInfo2 MoreInfo2 MoreInfo2 MoreInfo2 MoreInfo2 MoreInfo2
MoreInfo3 MoreInfo3 MoreInfo3 MoreInfo3 MoreInfo3
MoreInfo4 MoreInfo4
FieldName1 0001 0001
FieldName1 0002 0002
FieldName1 0003 0003
FieldName1 0004 0004
FieldName1 0005 0005
FieldName2 0001 0001
FieldName3 0001 0001
FieldName4 0001 0001
FieldName5 0001 0001
FieldName6 0001 0001
这是我处理过的一些代码。它能够读取第一个块并将其附加到列表中:
with open(loc, 'r') as f:
for i in range(16):
f.readline()
data = []
line = f.readline()
if line == "\n":
dataLine = f.readline()
while dataLine != "\n":
data.append(dataLine)
dataLine = f.readline()
#pass data list to function
function_call(data)
# reset data list here?
data = []
如何使它适用于完整文件?我的假设是使用“with open”,它充当“虽然不是文件结尾”。在跳过前 16 行后,我尝试添加“while True”。我对 Python 的解析能力知之甚少。
提前感谢您的任何帮助。