47

次のような数字の文字列があります。

example_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'

これをリストに変換したいと思います:

example_list = [0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11]

私は次のようなものを試しました:

for i in example_string:
    example_list.append(int(example_string[i]))

ただし、文字列にスペースとコンマが含まれているため、これは明らかに機能しません。ただし、「19」のような数字は 1 と 9 に変換されるため、それらを削除することはできません。

4

6 に答える 6

90

コンマで分割してから、整数にマップします。

map(int, example_string.split(','))

または、リスト内包表記を使用します。

[int(s) for s in example_string.split(',')]

map()リストの結果が必要な場合、または呼び出しを でラップできる場合は、後者の方がうまく機能しlist()ます。

int()空白を許容するため、これは機能します。

>>> example_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'
>>> list(map(int, example_string.split(',')))  # Python 3, in Python 2 the list() call is redundant
[0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11]
>>> [int(s) for s in example_string.split(',')]
[0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11]

コンマだけで分割することも、変数入力に対してより寛容です。値の間に 0、1、または 10 個のスペースを使用してもかまいません。

于 2013-10-12T12:52:46.637 に答える
12

最も汚い解決策はこれだと思います:

list(eval('0, 0, 0, 11, 0, 0, 0, 11'))
于 2013-10-12T12:55:19.120 に答える
7
number_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'

number_string = number_string.split(',')

number_string = [int(i) for i in number_string]
于 2014-10-08T15:12:24.537 に答える
7

それは動作するはずです

example_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'
example_list = [int(k) for k in example_string.split(',')]
于 2013-10-12T12:53:12.323 に答える
6

分割された文字列でリスト内包表記を使用することもできます

[ int(x) for x in example_string.split(',') ]
于 2013-10-12T12:53:23.567 に答える
2

これを試して :

import re
[int(s) for s in re.split('[\s,]+',example_string)]
于 2013-10-12T12:54:41.660 に答える