出于某种原因,我决定将我的数据列表保存为字符串。如果我使用
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等,但没有任何效果
答案 0 :(得分:5)
如果您使用的是numpy
(或者不介意使用它),则可以执行numpy.loadtxt('tarfile.txt', usecols=range(1,8))
。如果您希望将数据放在2-d numpy
数组中,那就特别好了。
答案 1 :(得分:2)
我的猜测是你的输入文件包含由空格分隔的浮点数。
要阅读此类文件,请删除[
和]
,拆分每一行,并将每个字段映射到一个浮动实例。
records = []
for line in f:
record = [float(field) for field in line.strip().lstrip('[').rstrip(']').split()]
records.append(record)
答案 2 :(得分: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.
答案 3 :(得分:0)
我认为regexp是解析数据的最佳方式:
import re
pattern = r'\d+.\d*'
array = []
for line in open('tarfile.txt'):
array.append(re.findall(pattern, line))