1

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

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

使用.strip()它摆脱了\n,所以它变成:

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

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

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

我认为这只会加深复杂性。将这个“字符串列表”转换为可以使用 for 循环的真实列表的有效方法是什么?我已经尝试了几个小时,但无法弄清楚。

4

4 回答 4

3

一个答案已经被接受,但我只是想添加这个作为记录。json 模块非常适合这种事情:

import json
s = '[24, 72, 95, 100, 59, 80, 87]\n'
lst = json.loads(s)
于 2013-04-27T18:53:45.923 回答
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.
于 2013-04-27T18:25:21.527 回答
0

使用ast.literal_eval

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

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

于 2013-04-27T18:27:22.447 回答
0

你不需要为此导入任何东西

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

s.translate(None, '[]').split(', ') 会给你一个字符串数字列表

如果您想要整数列表,请尝试

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

于 2013-04-29T07:36:12.713 回答