我有一个字符串"42 0"
(例如),需要获取两个整数的数组。我可以在空格上做.split
吗?
答案 0 :(得分:83)
>>> "42 0".split() # or .split(" ")
['42', '0']
答:是的。
但是没有特别指出split
方法默认情况下会拆分空格(空格,制表符,carriage return 和 newline)不要提供论据。
>>> " \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]
答案 1 :(得分:53)
text = "42 0"
nums = [int(n) for n in text.split()]
答案 2 :(得分:11)
l = (int(x) for x in s.split())
如果你确定总有两个整数,你也可以这样做:
a,b = (int(x) for x in s.split())
或者您计划在
之后修改数组l = [int(x) for x in s.split()]
答案 3 :(得分:7)
这应该有效:
[ int(x) for x in "40 1".split(" ") ]
答案 4 :(得分:4)
当然你可以调用split
,但它会返回字符串,而不是整数。做
>>> x, y = "42 0".split()
>>> [int(x), int(y)]
[42, 0]
或
[int(x) for x in "42 0".split()]
答案 5 :(得分:3)
其他答案已经表明您可以使用split()将值转换为list。如果你问的是Python的arrays,这里有一个解决方案:
import array
s = '42 0'
a = array.array('i')
for n in s.split():
a.append(int(n))
编辑:更简洁的解决方案:
import array
s = '42 0'
a = array.array('i', (int(t) for t in s.split()))
答案 6 :(得分:2)
这是我对python 3的回答。
some_string = "2 3 8 61 "
list(map(int, some_string.strip().split()))
答案 7 :(得分:1)
给出:?name
?label
答案 8 :(得分:1)
我建议检查子字符串是否为数字:
In [1]: [int(i) for i in '1 2 3a'.split() if i.isdigit()]
Out[1]: [1, 2]
答案 9 :(得分:0)
只需使用strip()
删除空白并在变量上应用显式的int转换。
例如:
a='1 , 2, 4 ,6 '
f=[int(i.strip()) for i in a]
答案 10 :(得分:0)
使用 numpy 的 fromstring
:
import numpy as np
np.fromstring("42 0", dtype=int, sep=' ')
>>> array([42, 0])