2010-06-30 72 views
2

我有一個reeeealy巨大的字符串,看起來像['elem1','elem2',(...)]幷包含大約100,000(!)元素。 將其更改回列表的最佳方法是什麼?轉換數組到字符串

+0

嗯,它是轉換爲字符串還是轉換爲你正在尋找的數組? – Codler 2010-06-30 08:30:15

+0

你確定它是一個字符串,你不是在做'repr(yourlist)'這樣的東西嗎?謹慎分享一些代碼? – 2010-06-30 08:36:55

+0

是的,它是由我編寫的文本文件中的字符串 - eval效果很好 – pythonina 2010-06-30 08:52:09

回答

3

eval("['elem1','elem2']")給你回列表['elem1','elem2']

如果從json模塊有串看起來像這樣["elem1","elem2",(...)]您可以使用json.read()(在Python 2.5或更早版本)或json.loads()(在Python 2.6)安全地加載它。

+0

JSON解析器是否區分單引號和雙引號? – detly 2010-06-30 08:53:14

+0

似乎是這樣。嘗試json.read(「['a']」)給出json.ReadException:輸入無效JSON:'['a']' – 2010-06-30 10:30:55

0

如果你不想使用eval,這可能工作:

big_string = """['oeu','oeu','nth','nthoueoeu']""" 

print big_string[1:-2].split("'")[1::2] 
1

一個可能的解決方案是:

input = "['elem1', 'elem2' ] " 
result_as_list = [ e.strip()[1:-1] for e in input.strip()[1:-1].split(",") ] 

這在內存中構建完整的結果列表。你可以切換到發生器表達式

result_as_iterator = (e.strip()[1:-1] for e in input.strip()[1:-1].split(",")) 

如果內存消耗是一個問題。