文件的陣列我有一個文件,寫在一個數組,如:閱讀從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
文件的陣列我有一個文件,寫在一個數組,如:閱讀從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
如果格式總是這樣,一個方法是使用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)
是的,這似乎是做我想做的,和一個simpe解決方案。謝謝:) – GonacFaria
這應該做的伎倆:
def get_data():
myfile = open('random_array.txt', 'r')
data = myfile.read().strip()
data = data[1:len(data)-1]
splitted = data.split(", ")
return splitted
這消除了開頭和結尾「[]」,然後分割的字符串每個", "
,給你一個正好是數字的字符串數組。
但是用這個解決方案你不會把數字當作int來處理,一切都會被當作字符串來處理,對不對? – GonacFaria
@GonacFaria是的,這是真的,但爲了解析數據,這應該就夠了。然後你可以通過int(data [i])'來轉換數組中的單個元素。但是的確,json-parser方法更加優雅。 –
確實它更優雅,更簡單。我不想解析字符串,但想找一種方法來解釋它。 – GonacFaria
在這種特殊情況下,最好使用json
模塊,因爲它似乎你的陣列使用相同的格式,但總的來說,你可以做這樣的事情:
def get_data(filename):
with open(filename, 'r') as f:
return [int(x) for x in f.read().strip('[]\n').split(',')]
能夠保證所有的僅僅是有一個在文件中具有這種確切格式的數組? –
這個問題可能會幫助你從字符串中獲取列表:http://stackoverflow.com/questions/1894269/convert-string-representation-of-list-to-list-in-python – dgeorgiev
托比亞斯,是的。它將始終是相同的格式。只有一個數組顯示。 – GonacFaria