5

どういうわけか、データのリストを文字列として保存することにしました。使用する場合

f = open('tarfile.txt')
for line in f.readlines():
    print line
f.close()

私の出力は次のようになります:

[  53.7775   13.4375   26.525    48.63    125.      185.      653.    ]    
[  53.7775    13.33625   26.73375   48.68375  125.       185.       653.     ]    
[  53.7775    13.325     27.11375   48.8875   126.       187.       653.     ]    
[  53.7775    13.43625   27.3175    48.92875  126.       187.       653.     ]    
[  53.7775    14.4825    33.07375   51.7325   141.       202.       595.     ]

このデータを2D配列に読み込みたいのですが。pickle、eval、jsonなどのさまざまな方法を検索して試しましたが、何も機能しませんでした

4

4 に答える 4

7

使用しているnumpy(または使用してもかまわない)場合は、を実行できますnumpy.loadtxt('tarfile.txt', usecols=range(1,8))numpyとにかく2次元配列でデータが必要な場合は特に便利です。

于 2012-10-23T13:53:13.483 に答える
2

私の推測では、入力ファイルには空白で区切られた浮動小数点数が含まれています。

このようなファイルを読み取るには、[とを削除し、]各行を分割して、各フィールドをfloatインスタンスにマップします。

records = []
for line in f:
    record = [float(field) for field in line.strip().lstrip('[').rstrip(']').split()]
    records.append(record)
于 2012-10-23T13:44:18.080 に答える
2

[]まず、 Pythonが処理できるものに変換する必要があります。

import string
table = string.maketrans('[]','  ')

これで、ファイルを反復処理し、変換、分割、およびフローティングすることができます。

for line in f:
    print [float(x) for x in line.translate(table).split()]

[それが最初の文字であり、行の最後の文字であることが保証されている場合]は、スライスを使用してそれを行うことができます。

print [float(x) for x in line[1:-2].split()]  #-2 accounts for the newline too.
于 2012-10-23T13:47:17.063 に答える
1

正規表現はデータを解析するための最良の方法だと思います。

import re
pattern = r'\d+.\d*'
array = []
for line in open('tarfile.txt'):
    array.append(re.findall(pattern, line))
于 2012-10-23T13:52:56.453 に答える