2013-04-27 59 views
1

我正在打開一個.txt文件,並且必須使用它的內部列表來編寫我正在編寫的函數。這是在文本文件中給出的列表中的一個:如何將'字符串列表'變成真正的列表?

'[24, 72, 95, 100, 59, 80, 87]\n' 

使用.strip()它擺脫了\n的,所以就變成:

'[24, 72, 95, 100, 59, 80, 87]' 

我認爲採用分體式是沒用的,因爲使用split(' ')會產生:

['[24, 72, 95, 100, 59, 80, 87]'] 

我認爲這只是加深了併發症。什麼是一個有效的方法來將這個'字符串列表'變成一個真正的列表我可以使用for循環?我已經嘗試了幾個小時,並且無法弄清楚。

+0

EVAL可以在這種情況下 – spicavigo 2013-04-27 18:25:04

+1

另一種方式可以是JSONë使用.load和轉儲。你使用json.dump創建文件並用它讀取它。json.load – spicavigo 2013-04-27 18:26:03

+0

'.split('')'應該產生了'['[','24','72','95,','100' ,'59,','80','87]']' – Aprillion 2013-04-27 18:29:14

回答

2

您可以使用ast.literal_eval

In [8]: strs='[24, 72, 95, 100, 59, 80, 87]\n' 

In [9]: from ast import literal_eval 

In [10]: literal_eval(strs) 
Out[10]: [24, 72, 95, 100, 59, 80, 87] 

幫助上ast.literal_eval

In [11]: literal_eval? 
Type:  function 
String Form:<function literal_eval at 0xb6eaf6bc> 
File:  /usr/lib/python2.7/ast.py 
Definition: literal_eval(node_or_string) 
Docstring: 
Safely evaluate an expression node or a string containing a Python 
expression. The string or node provided may only consist of the following 
Python literal structures: strings, numbers, tuples, lists, dicts, booleans, 
and None. 
+0

當我使用默認空閒shell時,它可以正常工作,但是當我在它外面醒來時,比如在我正在處理的文件夾中, 「沒有名爲ast的模塊」 – 2013-04-27 18:31:49

+0

@HaileyMonette python版本? – 2013-04-27 18:35:26

+0

其實你是正確的,出於某種原因,空閒2.5運行而不是2.7.3,但這種解決方案確實工作,非常感謝! – 2013-04-27 18:41:31

0

使用ast.literal_eval

strs='[24, 72, 95, 100, 59, 80, 87]\n' 
list_of_strs = ast.literal_eval(strs) 

進一步的幫助,發表評論....

3

答案已經被接受,但我只是想添加這個記錄。 json模塊是這種事情真的很不錯:

import json 
s = '[24, 72, 95, 100, 59, 80, 87]\n' 
lst = json.loads(s) 
0

你不需要去爲這個

S =「[24,72,95,100,59進口什麼, 80,如果你想INTS的列表87] '

s.translate(無, '[]')。分裂('「)會給你是字符串

號碼列表嘗試

[INT(i)用於i的s.translate(無, '[]')。分裂( '')]

相關問題