2013-03-09 85 views
3

我读一个字符串,它总是用空格隔开五个号码,我想这分裂成五个独立的整数,这样我就可以分别处理它们。在Python中,我如何将一个字符串拆分为多个整数?

到目前为止我有:

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

,让我打印出来的值,我该如何将它们存储为单个整数?

+0

这是您正在阅读的csv文件还是只是间隔整数列表? – 2013-03-09 18:37:53

+0

你可以显示输出,如果你的上面的代码? – pradyunsg 2013-03-09 18:40:57

回答

14

你可以不喜欢这样。假设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())'。 – 2013-03-09 18:43:47

+0

我在哪里添加行[int(i)for i in s.split('')]?我是否完全替换了我正在使用的代码? – ianphil397 2013-03-09 18:48:56

+0

对不起,我一个C编码器,这是使用Python(或任何高级语言),我的第一天,感谢您的帮助。 – ianphil397 2013-03-09 18:55:33

0

也许这是有帮助的人,但如果你想,而不是返回一个错误的空数组当字符串是0字节长,可以提高一个衬垫与内联,如果这样的话:

s = "1 2 3" 
result = [] if s == "" else map(int, s.split(" ")) 
print result 
相关问题