2017-02-17 59 views
2

文件的阵列我有一个文件,写在一个数组,如:阅读从Python中

[1, 2, 3, 4, 5, 6, 7] 

我怎么能读它,并得到阵列,使Python中的变量?到目前为止发生的事情是,我只是得到了字符串。

def get_data(): 
    myfile = open('random_array.txt', 'r') 
    data = myfile.read().replace('\n', '') 
    return data 
+1

能够保证所有的仅仅是有一个在文件中具有这种确切格式的数组? –

+0

这个问题可能会帮助你从字符串中获取列表:http://stackoverflow.com/questions/1894269/convert-string-representation-of-list-to-list-in-python – dgeorgiev

+0

托比亚斯,是的。它将始终是相同的格式。只有一个数组显示。 – GonacFaria

回答

2

如果格式总是这样,一个方法是使用json.loads

>>> s = "[1,2,3,4]" 
>>> import json 
>>> json.loads(s) 
[1, 2, 3, 4] 

这样做,你可以用逗号之间的任何空间,你可以使用花车和整数的优势文本等等。

所以,你的情况,你可以这样做:

import json 

def get_data(): 
    with open("random_array.txt", "r") as f: 
     return json.load(f) 
+1

是的,这似乎是做我想做的,和一个simpe解决方案。谢谢:) – GonacFaria

0

这应该做的伎俩:

def get_data(): 
    myfile = open('random_array.txt', 'r') 
    data = myfile.read().strip() 
    data = data[1:len(data)-1] 
    splitted = data.split(", ") 
    return splitted 

这消除了开头和结尾“[]”,然后分割的字符串每个", ",给你一个正好是数字的字符串数组。

+1

但是用这个解决方案你不会把数字当作int来处理,一切都会被当作字符串来处理,对不对? – GonacFaria

+0

@GonacFaria是的,这是真的,但为了解析数据,这应该就够了。然后你可以通过int(data [i])'来转换数组中的单个元素。但是的确,json-parser方法更加优雅。 –

+0

确实它更优雅,更简单。我不想解析字符串,但想找一种方法来解释它。 – GonacFaria

1

在这种特殊情况下,最好使用json模块,因为它似乎你的阵列使用相同的格式,但总的来说,你可以做这样的事情:

def get_data(filename): 
    with open(filename, 'r') as f: 
     return [int(x) for x in f.read().strip('[]\n').split(',')]