1行目、2行目、3行目ごとにtxtファイルを読み取り、3つの異なるリストに保存します

ブルース

私はこのような巨大な一定形式のテキストファイルを持っています:

first line
2nd line
3rd line 
#Mi Mj
#Ni Nj Nk
#Pi Pj
#----------- The numeric values start here ------
M0 M1
N0 N1 N2
P0 P1
M1 M2
N1 N2 N3
P1 P2
M2 M3
N2 N2 N3
P2 P3
...

1行目から7行目をスキップし、1行目、2行目、3行目ごとに7行目以降のファイルを読み取り、3つの異なるリストに保存する必要があります。

他の2行をスキップすることで、コードの1行ごとにそれを実行できましたが、2行目と3行ごとに実行することはできませんでした。ただし、next(fileobject)を2回使用することは、効率的な方法ではありません。それで、誰かが私にそれを巨大なファイルのためにどのように最善にすることができるか教えてもらえますか?私は最後にそのような結果が必要です:

list1 = [M0, M1, M1, M2, M2, M3]
list2= [N0,N1,N2,N1, N2,N3,N2,N2, N3]
list3= [P0, P1, P1, P2,P2, P3] 

これが私のコードです:

    # Python 3
myfile = open('myfile.txt', 'r')

m,n,p = [], [], []

for line in myfile:
    ll = line.strip()  # string
    if not ll.startswith("#"):
        row = ll.split()  # list
        print(row)
        try:
            m.append(row[0]) # append first column of every third line
        except IndexError:
            print('There is not a standard line: ', line)
        next(myfile)
        next(myfile)
print(m)
myfile.close()
ジョエル・コーネット

ファイルを3行のグループ分割する必要があります。

# based on 'grouper()' example from the python 2 itertools documentation
from itertools import izip
def partition(lines, n):
    iters = [iter(lines)] * n
    return izip(*iters)

したがって、実行list(partition("ABCDEFGHI", 3))すると次のようになります。

["ABC", "DEF", "GHI"]

次に、結果を分解して再圧縮します。

partitions = partition("ABCDEFGHI", 3)
splits = zip(*partitions)

したがって、コードは次のようになります。

from itertools import izip, islice

def partition(lines, n):
    iters = [iter(lines)] * n
    return izip(*iters)

with open("myfile.txt") as f:
    keep = islice(f, 7, None) # drop the first 7 lines
    parts = partition(keep, 3) # partition into groups of 3
    groups = izip(*parts) # group the lines by their index % 3
    M, N, P = [sum((g.split() for g in group), []) for group in groups]

簡単にするために、エラーのチェック/処理は省略しました。

参照:https//docs.python.org/2/library/itertools.html?highlight = itertools#recipes

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2つの異なるファイルから読み取り、3番目のファイルに印刷する

分類Dev

Python .txtファイルの最後の3行を読み取り、それらの項目をリストに入れる方法は?

分類Dev

2行目から3行ごとにテキストファイルを印刷します

分類Dev

StreamReaderは、4行のテキストファイルから2行目と4行目のみを読み取ります

分類Dev

2つの異なるテキストファイルから1行目と2行目をループして印刷する方法

分類Dev

CSVファイルの1行目と3行目をシェルスクリプトの列に転置します

分類Dev

CSVファイルの2行目と3行目のみから余分なカンマを削除します

分類Dev

バッチスクリプトでテキストファイルから特定の単語(2行目、3行目)を読み取る

分類Dev

CSVファイルからPythonに2行目を読み取ります

分類Dev

行末記号なしでファイルの1行目を読み取ります

分類Dev

読み取られているテキストファイルの最初の行をスキップし、2行目で機能しているが、3行目も読み取っていないループ

分類Dev

テキストファイルの1行目と2行目の間に空行を追加する

分類Dev

テキストファイルから行を読み取り、その行で関数を呼び出し、2行目に移動する方法などはありますか?

分類Dev

2行目の2番目のフィールドをファイルの1行目に追加します

分類Dev

パンダを使用してcsvの0行目を読み取り、リストに保存します

分類Dev

node.js:テキストファイルを配列に読み込みます。(配列内の項目ごとに1行。)

分類Dev

MATLAB-テキストファイル(異なる形式の行)を1行ずつ読み取ります

分類Dev

Pythonの2行目からファイルを読み取ります

分類Dev

C配列のtxtファイルの2行目から数値を読み取ります

分類Dev

1番目の列が一致する場合、11番目の列の値が2番目のファイルの2番目と3番目の間にある行を抽出します

分類Dev

C#WPFは、.txtファイルを1行ずつ読み取り、GridViewColumnを使用してリストビューに保存します。

分類Dev

異なる行の3番目の列の値を条件として、1つの列の値を2番目の列の値に置き換えます

分類Dev

2つのファイルを1行ずつ比較し、一致するものを3番目のファイルに移動します

分類Dev

2行目からファイルを読み取るか、ヘッダー行をスキップします

分類Dev

2000行を超えるテキストファイルを読み取りますが、空の46行目で停止します。どうして?

分類Dev

1〜6行目から6〜12行目などのファイルを読み取り、1つの列を比較して、同じバージョンであるかどうかを確認します。

分類Dev

RxJ:3つのオブザーバブルを次々に実行し、最初から2番目、1番目と2番目から3番目のリクエストの結果を使用します

分類Dev

ファイルの最初のすべての行を値として読み取り、2番目を辞書のキーとして読み取る方法

分類Dev

2 つの txt ファイルを読み取り、Python を使用して結果を 3 番目のファイルに書き込む方法

Related 関連記事

  1. 1

    2つの異なるファイルから読み取り、3番目のファイルに印刷する

  2. 2

    Python .txtファイルの最後の3行を読み取り、それらの項目をリストに入れる方法は?

  3. 3

    2行目から3行ごとにテキストファイルを印刷します

  4. 4

    StreamReaderは、4行のテキストファイルから2行目と4行目のみを読み取ります

  5. 5

    2つの異なるテキストファイルから1行目と2行目をループして印刷する方法

  6. 6

    CSVファイルの1行目と3行目をシェルスクリプトの列に転置します

  7. 7

    CSVファイルの2行目と3行目のみから余分なカンマを削除します

  8. 8

    バッチスクリプトでテキストファイルから特定の単語(2行目、3行目)を読み取る

  9. 9

    CSVファイルからPythonに2行目を読み取ります

  10. 10

    行末記号なしでファイルの1行目を読み取ります

  11. 11

    読み取られているテキストファイルの最初の行をスキップし、2行目で機能しているが、3行目も読み取っていないループ

  12. 12

    テキストファイルの1行目と2行目の間に空行を追加する

  13. 13

    テキストファイルから行を読み取り、その行で関数を呼び出し、2行目に移動する方法などはありますか?

  14. 14

    2行目の2番目のフィールドをファイルの1行目に追加します

  15. 15

    パンダを使用してcsvの0行目を読み取り、リストに保存します

  16. 16

    node.js:テキストファイルを配列に読み込みます。(配列内の項目ごとに1行。)

  17. 17

    MATLAB-テキストファイル(異なる形式の行)を1行ずつ読み取ります

  18. 18

    Pythonの2行目からファイルを読み取ります

  19. 19

    C配列のtxtファイルの2行目から数値を読み取ります

  20. 20

    1番目の列が一致する場合、11番目の列の値が2番目のファイルの2番目と3番目の間にある行を抽出します

  21. 21

    C#WPFは、.txtファイルを1行ずつ読み取り、GridViewColumnを使用してリストビューに保存します。

  22. 22

    異なる行の3番目の列の値を条件として、1つの列の値を2番目の列の値に置き換えます

  23. 23

    2つのファイルを1行ずつ比較し、一致するものを3番目のファイルに移動します

  24. 24

    2行目からファイルを読み取るか、ヘッダー行をスキップします

  25. 25

    2000行を超えるテキストファイルを読み取りますが、空の46行目で停止します。どうして?

  26. 26

    1〜6行目から6〜12行目などのファイルを読み取り、1つの列を比較して、同じバージョンであるかどうかを確認します。

  27. 27

    RxJ:3つのオブザーバブルを次々に実行し、最初から2番目、1番目と2番目から3番目のリクエストの結果を使用します

  28. 28

    ファイルの最初のすべての行を値として読み取り、2番目を辞書のキーとして読み取る方法

  29. 29

    2 つの txt ファイルを読み取り、Python を使用して結果を 3 番目のファイルに書き込む方法

ホットタグ

アーカイブ