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」を使用すると、「while not end of file」として機能するということでした。最初の 16 行をスキップした後、「while True」を追加してみました。私は Python の解析機能についてほとんど知識がありません。
助けてくれてありがとう。