我有一个文本文件,每行都有一个数组。如下所示,我想要的是每行的单独数组。例如:
a1 =[35.947, -54.045, 75.418]
a2=[36.467, -53.041, 74.451]
[35.947, -54.045, 75.418]
[36.467, -53.041, 74.451]
[35.359, -52.008, 74.353]
这是我能走得多远:
def readFile(self):
with open(self.file) as file:
list = [line.strip() for line in open(self.file)]
for i in range(len(list)):
答案 0 :(得分:1)
您可以创建字典来存储变量名称及其值的映射。在字典中,键是存储为字符串的变量名称,值是float
值的列表。
variable_dict = {}
with open("sample.txt", "r") as data_file:
for line in data_file.readlines():
var_name, value = line.strip().replace(" ", "").split("=")
variable_dict[var_name] = map(float,value[1:-1].split(","))
print variable_dict
>>> {'a1': [35.947, -54.045, 75.418], 'a2': [36.467, -53.041, 74.451]}
print variable_dict["a1"] #Accessing some varibale
>>> [35.947, -54.045, 75.418]
答案 1 :(得分:0)
您可以做的最好的事情是从纯文本文件中读取简单表达式。 例如: 如果文件包含
a1 = [35.947, -54.045, 75.418]
[36.467, -53.041, 74.451]
[35.359, -52.008, 74.353]
然后在第2行和第3行使用eval()
可能会给你类似
>> type(data[1])
str
>> data[1]
'[36.467, -53.041, 74.451]\n'
>> a = eval(data[1])
>> a
[36.467, -53.041, 74.451]
>> type(a)
list
但第1行的eval()将失败,因为eval仅解析具有已知值的表达式。和a1不是已知值。从我的观点来看,你可以做到最好