如何在Python中将字符串拆分为整数?

时间:2011-06-21 17:44:56

标签: python arrays string split integer

我有一个字符串"42 0"(例如),需要获取两个整数的数组。我可以在空格上做.split吗?

11 个答案:

答案 0 :(得分:83)

对于OP可以通过interpreter中的测试轻松回答自己的问题,6个答案还不够:

>>> "42 0".split()  # or .split(" ")
['42', '0']

答:是的。

但是没有特别指出split方法默认情况下会拆分空格(空格,制表符,carriage return newline)不要提供论据。

>>> " \r  42\n\r \t\n   \r0\n\r\n".split()
['42', '0']

此外,当您想要将可迭代项目转换为内置插件(如mapintfloat时,使用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])