我有一個字符串"[u'foo']"
(是的,它包括方括號和u''
)。我必須將其轉換爲看起來像[u'foo']
的列表。Python將格式化的字符串轉換爲列表
list("[u'foo']")
不起作用。
有什麼建議嗎?
我有一個字符串"[u'foo']"
(是的,它包括方括號和u''
)。我必須將其轉換爲看起來像[u'foo']
的列表。Python將格式化的字符串轉換爲列表
list("[u'foo']")
不起作用。
有什麼建議嗎?
>>> import ast
>>> s = "[u'foo']"
>>> ast.literal_eval(s)
[u'foo']
+1代表安全的'literal_eval'而不是'eval'。 – 2010-09-01 22:54:57
eval("[u'foo']", {'__builtins__':[]}, {})
你知道,傳遞'locals'和'globals'的空字符不足以'安全''eval',是嗎?這仍然給攻擊者基本上完全訪問您的系統。 – habnabit 2010-09-01 23:39:43
POC:'eval('__ import __(「os」)。getcwd()',{},{})',我編輯了我的答案 – leoluk 2010-09-01 23:42:09
@leoluk,它不能'證明'任何東西。如果x .__ name__ =='file'] [0]('/ etc/passwd')。readline()函數返回類型爲[x的類型(type(1)).__ bases __ [0] .__子類__() 「,{},{})'給我我的系統上的第一行'/ etc/passwd'。 – habnabit 2010-09-01 23:49:19
你能澄清?列表應該包含什麼? – Mike 2010-09-01 22:46:42
字符串從哪裏來?這不是一個非常有用的格式;如果您正在生成它,請考慮使用更好的格式。 – habnabit 2010-09-01 23:16:37
我從GAE bulkloader bulk_download獲取它。它是數據存儲中的列表屬性。它得到的下載並最終看起來像在我的CSV文件。有什麼建議麼? – Albert 2010-09-02 00:15:36