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

Jon*_*han 48 python arrays string integer split

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

Lau*_*low 95

6个答案对于OP可以通过在口译员中进行测试而轻易回答的问题来说已经不够了:

>>> "42 0".split()  # or .split(" ")
['42', '0']
Run Code Online (Sandbox Code Playgroud)

答:是的.

但是没有特别指出,如果你没有为它提供参数split,默认情况下该方法会拆分空格(空格,制表符,回车符 换行符).

>>> " \r  42\n\r \t\n   \r0\n\r\n".split()
['42', '0']
Run Code Online (Sandbox Code Playgroud)

另外,在使用map时要iterables的项目转换为内置插件一样平常看起来比使用列表解析清洁剂int,float,str等在Python 2:

>>> map(int, "42 0".split())
[42, 0]
Run Code Online (Sandbox Code Playgroud)

在Python 3中,map将返回一个惰性对象,您可以将其放入一个列表中list(),或者在for循环中使用,例如:

>>> map(int, "42 0".split())
<map object at 0x7f92e07f8940>
>>> list(map(int, "42 0".split()))
[42, 0]
Run Code Online (Sandbox Code Playgroud)

  • 地图+1,没有传递任何东西到split() (9认同)

kin*_*all 55

text = "42 0"
nums = [int(n) for n in text.split()]
Run Code Online (Sandbox Code Playgroud)

  • 如果int(n)不能正常工作,则可能引发ValueError (2认同)

GWW*_*GWW 12

l = (int(x) for x in s.split())
Run Code Online (Sandbox Code Playgroud)

如果您确定总有两个整数,您也可以这样做:

a,b = (int(x) for x in s.split())
Run Code Online (Sandbox Code Playgroud)

或者如果您打算在之后修改数组

l = [int(x) for x in s.split()]
Run Code Online (Sandbox Code Playgroud)


Bru*_*uno 7

这应该工作:

[ int(x) for x in "40 1".split(" ") ]
Run Code Online (Sandbox Code Playgroud)


Fre*_*Foo 5

当然你可以调用split,但它会返回字符串,而不是整数。做

>>> x, y = "42 0".split()
>>> [int(x), int(y)]
[42, 0]
Run Code Online (Sandbox Code Playgroud)

或者

[int(x) for x in "42 0".split()]
Run Code Online (Sandbox Code Playgroud)