簡體   English   中英

有沒有一種方法可以將字符串轉換為列表

[英]Is there a way to convert a string to a list

我將列表保存在一個文本文件中,將其轉換為字符串。 當我閱讀清單時,得到的字符串如下:

"['layer1', '1', '10', '10', 'pending', 'Pending', '1', '1', '1', [[1, 10]]]"

我想知道是否有一種簡單的方法可以將其轉換回列表。 如果不可能,是否有更好的方法來保存並取回?

謝謝!

(我正在使用Python 2.6)

當然有更好的方法,最突出的是pickle模塊:

import cPickle as pickle

# Saving
with open("a.file", "w") as f:
    pickle.dump([1, 2, "Hello!"], f)

# Reading
with open("a.file") as f:
    obj = pickle.load(f)

與Python的json模塊相比, cPickle更加靈活。 另一方面,JSON為您提供了人類可讀的文件。 如果可以序列化對象,請使用JSON,因為cPickle不能用於不受​​信任的數據。

編輯 :刪除了有關性能的注釋,因為此事尚不確定。 ms4py的這個迷你基准表明json至少在某些對象上更快。

ast.literal_eval 它應該做您想要的。

>>> import ast
>>> sss="['layer1', '1', '10', '10', 'pending', 'Pending', '1', '1', '1', [[1, 10]]]"
>>> ast.literal_eval(sss)
['layer1', '1', '10', '10', 'pending', 'Pending', '1', '1', '1', [[1, 10]]]

這應該完全免受惡意代碼的eval (不同於eval ),但是它能夠讀取的對象必須是簡單的對象(字符串,整數,浮點數,無和布爾值或完全由字符串,整數,浮動,無和布爾值)。

當然,如果不需要人類可讀的數據文件,則應按照其他答案的建議看一下picklejson

編輯

引起我注意的是, json對於人類來說非常容易閱讀(請參閱下面的評論),因此您應該使用它。

您可以使用json

In [1]: import json

In [2]: mylist = [1, 2, 3]

In [3]: with open('data', 'w') as fobj:
   ...:     json.dump(mylist, fobj)
   ...:

In [4]: with open('data') as fobj:
   ...:     l = json.load(fobj)
   ...:

In [5]: l
Out[5]: [1, 2, 3]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM