【发布时间】:2011-09-19 18:06:02
【问题描述】:
我有一个字符串"42 0"(例如),需要得到一个包含两个整数的数组。我可以在空间上使用.split 吗?
【问题讨论】:
标签: python arrays string split integer
我有一个字符串"42 0"(例如),需要得到一个包含两个整数的数组。我可以在空间上使用.split 吗?
【问题讨论】:
标签: python arrays string split integer
使用str.split():
>>> "42 0".split() # or .split(" ")
['42', '0']
请注意,str.split(" ") 在这种情况下是相同的,但如果一行中有多个空格,则行为会有所不同。同样,.split() 会拆分所有空格,而不仅仅是空格。
当您想将可迭代项转换为 int、float、str 等内置函数时,使用 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]
【讨论】:
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,但它会返回字符串,而不是整数。做
>>> x, y = "42 0".split()
>>> [int(x), int(y)]
[42, 0]
或
[int(x) for x in "42 0".split()]
【讨论】:
您可以拆分并确保子字符串是单行中的数字:
In [1]: [int(i) for i in '1 2 3a'.split() if i.isdigit()]
Out[1]: [1, 2]
【讨论】:
给定:text = "42 0"
import re
numlist = re.findall('\d+',text)
print(numlist)
['42', '0']
【讨论】:
【讨论】: