1

ファイルを開いてい.txtますが、作成中の関数のためにファイル内のリストを使用する必要があります。これは、テキスト ファイルで指定されたリストの 1 つです。

'[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

4 に答える 4

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

このために何かをインポートする必要はありません

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

s.translate(None, '[]').split(', ') は、文字列である数値のリストを提供します

intのリストが必要な場合は試してください

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

于 2013-04-29T07:36:12.713 に答える
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 に答える