pythonがtxtファイルを読み取るときのsplit()関数の魔法の使用

txtファイルから複数の行と列を含むデータを読み取る必要があるかどうかはわかりません。データを読み取ると、データは次stringの形式で読み取られますが、データタイプの変換方法が大きな問題になっています。 。これが最も簡単な方法の1つであり、間違った方法を使用するのは簡単です。

txtテストファイルのデータは次のとおりです。

テストファイルデータ
次のコードを使用してファイルを読み取り、readlines()すべてのデータを一度に読み取ります

with open(r"C:\Users\15025\Desktop\debug1.txt", "r") as f:
    all_data = f.readlines()
    print(all_data)
# ['6.317438621610765E-05  6.123920173773844E-05  0.00010382572761752979\n', '0.00010819194873178063  8.848784016828921E-05  0.0002043378699454479\n', '9.79660835582763E-05  9.750829986943346E-05  0.00021506758227284687']

現時点ですべてのデータが同じ行に読み込まれていることを確認するのは難しくありませんが、テストデータの3行と一致する、一重引用符で囲まれた3つの部分があります。また、これらのデータを別々の部分に分割する必要があることもわかります。string次に、たとえばfloatキーワードを使用して、これらのデータに対して型変換を実行できます。データがスペースで区切られていることがわかります。最初に.split(" ")、データをスペースで区切る方法を使用する必要があると考えました次のコードを試してみます。

with open(r"C:\Users\15025\Desktop\debug1.txt", "r") as f:
    all_data = f.readlines()
    all_data = all_data[0].split(" ")
    print(all_data)
# ['6.317438621610765E-05', '', '6.123920173773844E-05', '', '0.00010382572761752979\n']

まず、最初の行を選択して使用しall_data[0]、次にusesplit(" ")関数でそれら分離する必要があります目標は達成できますが""、最後\n空の文字列アイテムと隠れた危険も導入しました。これは非常に注意が必要です。そうすることで、私たちは誤解を入力しました。正しいアプローチは次のとおりです。

with open(r"C:\Users\15025\Desktop\debug1.txt", "r") as f:
    all_data = f.readlines()
    all_data = all_data[0].split()
    print(all_data)
# ['6.317438621610765E-05', '6.123920173773844E-05', '0.00010382572761752979']

split()関数の使用時にパラメータを追加しないため、""空の文字列アイテムと最後の\n隠れた危険一度削除され各文字列が同時に分離さます。複数行の結果を出力する必要がある場合は、データを格納するための配列を事前に定義できます。完全なコードは次のとおりです(すべてのデータをこの方法で読み取ることができます)

import matplotlib.pyplot as plt
import numpy as np

array = np.zeros((3, 3))
with open(r"C:\Users\15025\Desktop\debug1.txt", "r") as f:
    all_data = f.readlines()
    for i, line in enumerate(all_data):
        numbers = line.split()
        for j, element in enumerate(numbers):
            array[i, j] = float(element)

print(array)
# [[6.31743862e-05 6.12392017e-05 1.03825728e-04]
#  [1.08191949e-04 8.84878402e-05 2.04337870e-04]
#  [9.79660836e-05 9.75082999e-05 2.15067582e-04]]

役に立ったら手を挙げていいねをあげて、もっと多くの人にオススメさせてください〜

おすすめ

転載: blog.csdn.net/u011699626/article/details/110944889