在Python中,我如何将一个字符串分割成多个整数?

4

我正在阅读一个由五个数字组成,用空格分隔的字符串,我想将其拆分为五个单独的整数,以便我可以分别处理它们。

到目前为止,我有:

reader = csv.reader([data.data], skipinitialspace=True)
for r in reader:
    print r

我可以将这些值打印出来,但如何将它们存储为单独的整数?


你现在读取的是一个 CSV 文件还是仅有由空格隔开的整数列表? - Explosion Pills
你能展示一下上面代码的输出吗? - pradyunsg
1个回答

16

您可以这样做。假设s是您从reader读取的行。

>>> s='2 3 4 5 6'
>>> s.split(' ')
['2', '3', '4', '5', '6'] #just split will give strings
>>> [int(i) for i in s.split(' ')] #typecasting to ints
[2, 3, 4, 5, 6] #now you have ints

需要注意的是,我假设reader中的行没有其他数据类型。否则,此代码可能会崩溃。您当然可以使用try: except:来规避这个问题,或者使用更精细的解析技术。

更新0:@Pavel Annosov的一句才华横溢的代码:map(int, s.split())map是一个巧妙的Python内置函数,它允许您将函数映射到任何可迭代对象。

更新1:很容易看出这将如何工作,但为了使@user2152165更加清楚,请看下面的示例。

ints_list = []
for r in reader:
    ints_list = map(int, r.strip().split(' '))

ints_list 是一个包含您的整数的列表。对它进行自己想做的操作...


8
可以直接使用map(int, s.split())来转换字符串s中的数字为整型。 - Pavel Anossov
我应该在哪里添加[int(i) for i in s.split(' ')]这行代码?我需要完全替换正在使用的代码吗? - ianphil397
抱歉,我是一名C语言程序员,这是我第一次使用Python(或任何高级语言),感谢您的帮助。 - ianphil397
我遇到了以下错误:ints_list = map(int, r.strip().split(' ')) AttributeError: 'list' object has no attribute 'strip' - ianphil397
你能打印出 r 是什么吗?看起来 r 是一个 list 对象。 - Srikar Appalaraju
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接