如何将一串用空格分隔的数字拆分为整数?
- 2025-01-06 08:32:00
- admin 原创
- 92
问题描述:
我有一个字符串"42 0"
(例如),需要获取两个整数的数组。我可以.split
在空格上执行吗?
编者注:
解决这个问题的明显方法是将几个简单的任务进行常见的组合:
如何将字符串拆分成单词列表?
如何将字符串解析为浮点数或整数?
如何在列表、字典等中收集重复计算的结果(或复制每个元素都经过修改的列表)?
但是,根据具体要求,可以用其他方式解决。在某些情况下,拆分步骤本身可能就足够了。除了本机 Python 之外,还有其他方法(在这里的一些答案中给出)可以产生不同的输出list
- 例如,使用标准库array.array
或 Numpy 数组。
或者,该问题也可以看作是如何在 Python 中从字符串中提取数字的特殊情况。
解决方案 1:
使用str.split()
:
>>> "42 0".split() # or .split(" ")
['42', '0']
请注意,str.split(" ")
在这种情况下是相同的,但如果一行中有多个空格,则行为会有所不同。此外,.split()
拆分所有空格,而不仅仅是空格。
map
当你想要将可迭代对象的项转换为内置函数(如int
、、等)时,使用通常看起来比使用列表推导更干净float
。str
在 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]
解决方案 2:
text = "42 0"
nums = [int(n) for n in text.split()]
解决方案 3:
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()]
解决方案 4:
这应该有效:
[ int(x) for x in "40 1".split(" ") ]
解决方案 5:
当然你可以调用split
,但它会返回字符串,而不是整数。
>>> x, y = "42 0".split()
>>> [int(x), int(y)]
[42, 0]
或者
[int(x) for x in "42 0".split()]
解决方案 6:
其他答案已经表明您可以使用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()))
解决方案 7:
您可以拆分并确保子字符串是一行中的数字:
In [1]: [int(i) for i in '1 2 3a'.split() if i.isdigit()]
Out[1]: [1, 2]
解决方案 8:
鉴于:text = "42 0"
import re
numlist = re.findall('d+',text)
print(numlist)
['42', '0']
解决方案 9:
使用 numpy 的fromstring
:
import numpy as np
np.fromstring("42 0", dtype=int, sep=' ')
>>> array([42, 0])
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD