如何将'字符串列表'转换为真实列表?

时间:2013-04-27 18:23:56

标签: python python-2.7

我正在打开一个.txt文件,并且必须在其中使用一个列表来处理我正在编写的函数。这是文本文件中给出的列表之一:

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

使用.strip()它会删除\n,因此它变为:

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

我认为使用split会没用,因为使用split(' ')会产生:

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

我认为这只会加深并发症。什么是将这个'字符串列表'转换为真实列表的有效方法我可以使用for循环?我已经尝试了几个小时,但无法理解。

4 个答案:

答案 0 :(得分:3)

答案已经被接受了,但我只想将其添加到记录中。 json模块非常适合这种事情:

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

答案 1 :(得分: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.

答案 2 :(得分:0)

使用ast.literal_eval

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

进一步的帮助,发表评论......

答案 3 :(得分:0)

您无需为此输入任何内容

  

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

     

s.translate(无,'[]')。split(',')将为您提供一个字符串数字列表

如果你想要一个整数列表,试试

  

[int(i)for s in s.translate(None,'[]')。split(',')]