web-dev-qa-db-ja.com

Python-数字の文字列をintのリストに変換する

私は次のような数字の文字列を持っています:

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に変換されるため、それらを削除することはオプションではありません。

24
Bart M

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

_map(int, example_string.split(','))
_

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

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

後者は、リスト結果が必要な場合、Python 3でより適切に動作します。

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

_>>> example_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'
>>> map(int, example_string.split(','))  # Python 2, in Python 3 returns iterator object
[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]
_

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

55
Martijn Pieters

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

list(eval('0, 0, 0, 11, 0, 0, 0, 11'))
7
hendrik
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]
6
Rohit Singh

うまくいくはず

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(',')]
5
lucemia

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

[ int(x) for x in example_string.split(',') ]
4
lejlot

これを試して :

import re
[int(s) for s in re.split('[\s,]+',example_string)]
2
Charles JOUBERT