我需要將代表遊戲世界中地圖的二維數組保存到configparser中。數據如下所示:如何在Python中保存二維數組(列表)?
[[0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [0, 0, 0, 0, 0]]
作爲示例。
我可以明顯地保存數據,但我不能把它從一個字符串中讀回來後轉換回列表...
,如果我不得不使用一個txt文件,我不介意順便說一下,只需用普通的文本文件處理程序讀入。
我需要將代表遊戲世界中地圖的二維數組保存到configparser中。數據如下所示:如何在Python中保存二維數組(列表)?
[[0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [0, 0, 0, 0, 0]]
作爲示例。
我可以明顯地保存數據,但我不能把它從一個字符串中讀回來後轉換回列表...
,如果我不得不使用一個txt文件,我不介意順便說一下,只需用普通的文本文件處理程序讀入。
Python有一個保存Python數據的模塊,名爲pickle
。你可以使用它。從文檔:
pickle模塊實現了一個基本但功能強大的算法,用於對對象結構進行序列化和反序列化。 「酸洗」 是將Python對象層次結構轉換爲 字節流的過程,「取消」是相反的操作,由此將字流轉換回對象層次結構。酸洗(或取消) 或者稱爲「序列化」,「編組」,或者「變平」,但是,爲了避免混淆,這裏使用的術語 是「酸洗」和「取消」。
演示:
>>> import pickle
>>> data = [[0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [0, 0, 0, 0, 0]]
>>> with open('C:/temp/pickle_test.data', 'w') as f:
pickle.dump(data, f)
>>> with open('C:/temp/pickle_test.data', 'r') as f:
new_data = pickle.load(f)
>>> new_data
[[0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [0, 0, 0, 0, 0]]
對於字符串轉換到一個列表中,你可以做這樣的事情:
myList = [x for x in "0,1,2,3".split(",")]
type(myList)
<type 'list'>
print myList
['0', '1', '2', '3']
你可以用一個簡單的eval
>>> x="[[0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [0, 0, 0, 0, 0]]"
>>> type(x);
<type 'str'>
>>> y=eval(x);
>>> print(y);
[[0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [0, 0, 0, 0, 0]]
>>>type(y);
<type 'list'>
做
這是一個非常快和污垢y解決方案,您應該使用更安全,更好的輸入文件解析器(如pickle)。
[pickle](http://docs.python.org/2/library/pickle.html)也可能是一個很好的方式來獲得你想要的 –