如何将一个string拆分为Python中的整数?
我有一个string"42 0"
(例如),需要获得两个整数的数组。 我可以在空间上做一个.split
吗?
6个答案远远不够,因为OP可以通过翻译testing来回答自己的问题:
>>> "42 0".split() # or .split(" ") ['42', '0']
答:是的。
但没有具体指出,如果不提供参数,默认情况下split
方法会将其分割为空格(空格,制表符, 回车符 和 换行符 )。
>>> " \r 42\n\r \t\n \r0\n\r\n".split() ['42', '0']
另外,当你想将迭代项目转换为内置插件如int
, float
, str
等时,使用map
通常比使用list comprehensions更清晰。
>>> 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())
如果你确定总是有两个整数你也可以这样做:
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
,但是它会返回string,而不是整数。 做
>>> x, y = "42 0".split() >>> [int(x), int(y)] [42, 0]
要么
[int(x) for x in "42 0".split()]
其他答案已经表明,你可以使用split()来获取值列表 。 如果你在问Python的数组 ,下面是一个解决scheme:
import array s = '42 0' a = array.array('i') for n in s.split(): a.append(int(n))
编辑:一个更简洁的解决scheme:
import array s = '42 0' a = array.array('i', (int(t) for t in s.split()))