我正在读一个字符串,它总是由空格分隔的五个数字,我想将它分成五个单独的整数,以便我可以单独处理它们。
到目前为止,我有:reader = csv.reader([data.data], skipinitialspace=True)
for r in reader:
print r
允许我打印出值,如何将它们存储为单个整数?
答案 0 :(得分:15)
你可以这样做。假设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
列出了您的整数。用它做你想做的......
答案 1 :(得分:0)
也许这对某人有帮助,但是如果你想在字符串为0字节长时返回一个空数组而不是一个错误,你可以使用内联改进一个衬里,如下所示:
s = "1 2 3"
result = [] if s == "" else map(int, s.split(" "))
print result