Python 如何将一串空格分隔的数字拆分为整数?
我有一个字符串Python 如何将一串空格分隔的数字拆分为整数?,python,arrays,string,split,integer,Python,Arrays,String,Split,Integer,我有一个字符串“42 0”(例如),需要获取两个整数的数组。我可以在空间上执行.split吗 text = "42 0" nums = [int(n) for n in text.split()] 如果确定始终存在两个整数,也可以执行以下操作: a,b = (int(x) for x in s.split()) 或者如果您计划在 l = [int(x) for x in s.split()] 当然,您可以调用split,但它将返回字符串,而不是整数。做 >>> x, y
“42 0”
(例如),需要获取两个整数的数组。我可以在空间上执行.split
吗
text = "42 0"
nums = [int(n) for n in text.split()]
如果确定始终存在两个整数,也可以执行以下操作:
a,b = (int(x) for x in s.split())
或者如果您计划在
l = [int(x) for x in s.split()]
当然,您可以调用
split
,但它将返回字符串,而不是整数。做
>>> x, y = "42 0".split()
>>> [int(x), int(y)]
[42, 0]
或
这应该起作用:
[ int(x) for x in "40 1".split(" ") ]
其他答案已经表明,您可以使用它将值转换为一个值。如果您想了解Python,这里有一个解决方案:
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()))
编辑:更简洁的解决方案:
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()))
使用:
请注意,str.split(“”)
在本例中是相同的,但如果一行中有多个空格,则其行为会有所不同。同样,.split()
对所有空格进行分割,而不仅仅是空格
当您想将iterables项转换为内置项(如int
、float
、str
)时,使用map
通常比使用列表理解看起来更简洁。在Python 2中:
>>> map(int, "42 0".split())
[42, 0]
在Python3中,map
将返回一个惰性对象。您可以使用list()
将其放入列表中:
映射(int,“42 0”.split())
>>>列表(映射(int,“42 0”.split())
[42, 0]
给定:text=“42 0”
我建议检查子字符串是否为数字:
In [1]: [int(i) for i in '1 2 3a'.split() if i.isdigit()]
Out[1]: [1, 2]
只需使用strip()
删除空格并对变量应用显式int转换
例:
使用numpy的:
int(n)可能会引发ValueError,如果它不起作用的话,我想这对这个特定的例子会有帮助,但是如果能看到一个关于在空格上拆分的能力的答案,那就太好了。
.strip()
只会拆分尾随空格。您仍将遍历空格和逗号,这将抛出一个错误。另外,如果有一个10,21
呢?您的代码将逐位迭代它
>>> map(int, "42 0".split())
<map object at 0x7f92e07f8940>
>>> list(map(int, "42 0".split()))
[42, 0]
import re
numlist = re.findall('\d+',text)
print(numlist)
['42', '0']
In [1]: [int(i) for i in '1 2 3a'.split() if i.isdigit()]
Out[1]: [1, 2]
a='1 , 2, 4 ,6 '
f=[int(i.strip()) for i in a]
import numpy as np
np.fromstring("42 0", dtype=int, sep=' ')
>>> array([42, 0])