Python:如何为文本中的每一行创建单独的数组

时间:2015-05-22 10:53:22

标签: python arrays

我有一个文本文件,每行都有一个数组。如下所示,我想要的是每行的单独数组。例如:

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)):

2 个答案:

答案 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不是已知值。从我的观点来看,你可以做到最好