如何将空格分隔的数字字符串拆分为整数?

70 投票
9 回答
213934 浏览
提问于 2025-04-16 20:01

我有一个字符串 "42 0"(比如说),我想把里面的两个数字提取成一个数组。我可以用空格来做 .split 吗?


解决这个问题的明显方法是将一些简单的任务结合起来:

不过,根据具体的需求,这个问题也可以用其他方法来解决。在某些情况下,单独使用分割步骤就足够了。这里的一些答案提供了其他方法,可以生成不同的输出,比如使用标准库中的 array.array,或者使用 Numpy 数组。

另外,这个问题也可以看作是 如何从字符串中提取数字? 的一个特例。

9 个回答

13
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()]
69

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶里。

我们通常会用一些工具来帮助我们完成这个任务。比如,有些编程语言提供了库或者框架,这些都是为了让我们更方便地处理数据。

在这个过程中,我们可能会遇到一些问题,比如数据格式不对,或者数据没有按照我们想要的方式出现。这就需要我们仔细检查每一步,确保数据能够顺利地从一个地方转移到另一个地方。

总之,处理数据就像是在做一个搬家工作,我们需要有条不紊地把每一件东西搬到新家,确保没有遗漏和损坏。

text = "42 0"
nums = [int(n) for n in text.split()]
148

使用 str.split() 方法:

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

需要注意的是,str.split(" ") 在这种情况下是一样的,但如果有连续多个空格,它的表现就会不同。而且,.split() 会把所有的空白字符都作为分隔符,而不仅仅是空格。

当你想把可迭代对象里的项目转换成像 intfloatstr 这样的内置类型时,使用 map 通常看起来比使用列表推导式更简洁。在 Python 2 中:

>>> map(int, "42 0".split())
[42, 0]

在 Python 3 中,map 会返回一个懒加载对象。你可以用 list() 把它转换成列表:

>>> map(int, "42 0".split())
<map object at 0x7f92e07f8940>
>>> list(map(int, "42 0".split()))
[42, 0]

撰写回答