文字列"42 0"
(たとえば)があり、2つの整数の配列を取得する必要があります。スペースで.split
を実行できますか?
OPが インタープリター でテストすることで簡単に自分自身に答えることができる質問に対して、6つの答えはほとんど十分ではありません。
_>>> "42 0".split() # or .split(" ")
['42', '0']
_
A:はい。
ただし、split
メソッドがデフォルトで空白(スペース、タブ、 キャリッジリターンand改行 )引数を指定しない場合。
_>>> " \r 42\n\r \t\n \r0\n\r\n".split()
['42', '0']
_
また、map
、int
、float
などのイテレート可能アイテムを組み込みに変換する場合、リスト内包表記を使用するよりもstr
を使用する方が通常はきれいに見えますなど。Python 2:
_>>> map(int, "42 0".split())
[42, 0]
_
Python 3、map
は遅延オブジェクトを返します。list()
でリストに入れるか、for
ループの例:
_>>> map(int, "42 0".split())
<map object at 0x7f92e07f8940>
>>> list(map(int, "42 0".split()))
[42, 0]
_
text = "42 0"
nums = [int(n) for n in text.split()]
l = (int(x) for x in s.split())
常に2つの整数があることが確実な場合は、次のこともできます。
a,b = (int(x) for x in s.split())
または後に配列を変更する予定がある場合
l = [int(x) for x in s.split()]
これは動作するはずです:
[ int(x) for x in "40 1".split(" ") ]
もちろんsplit
を呼び出すことはできますが、整数ではなく文字列を返します。行う
>>> x, y = "42 0".split()
>>> [int(x), int(y)]
[42, 0]
または
[int(x) for x in "42 0".split()]
python 3。
some_string = "2 3 8 61 "
list(map(int, some_string.strip().split()))
部分文字列が数字かどうかを確認することをお勧めします。
In [1]: [int(i) for i in '1 2 3a'.split() if i.isdigit()]
Out[1]: [1, 2]
指定:text = "42 0"
import re
numlist = re.findall('\d+',text)
print(numlist)
['42', '0']
strip()
を使用して、空のスペースを削除し、変数に明示的なint変換を適用するだけです。
例:
a='1 , 2, 4 ,6 '
f=[int(i.strip()) for i in a]