bugfix> python > 投稿

私のスクリプトは別のファイルからデータを読み込んでいます。 私はデータを文字列ではなくフロートとして必要とし、エレガント/パイソン的な方法を探しています浮く() リスト全体を繰り返してデータを変更したり、必要なときに変更したりする代わりに、最後の行で:

   data = []
    with open(os.path.join(path, file), "r") as f:            
        searchlines = f.readlines()
        for i, line in enumerate(searchlines):

            data.append(line.replace('[', ' ').replace(']', ' ').split())

これまでのところ、これはリストのリストのファイルからデータを保存しますストリング

最後の行をfloat()と組み合わせる方法は?

読み込む前のデータの例を次に示します。

   [[ 563.15   1673.97 3078.41]
     [ 563.15   1066.4  26617.7]
     [ 563.212  778.931 59356.1]

回答 2 件
  • map を使用する

    例:

    data.append(map(float, line.strip('[]').split()))
    
    

    もしpython3

    data.append(list(map(float, line.strip('[]').split())))
    
    

  • numpyをインストールしていますか?

    その場合、次のことができるからです。

    import numpy as np
    with open(os.path.join(path, file), "r") as f:            
        data = np.array([line.strip('[]').split() for line in f],dtype=float)
    
    

    それはあなたにfloat形式の行列を与えます。もちろん、これは各行に同じ数の値があることを前提としています

あなたの答え