2017-02-17 115 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(',')]