2013-03-09 130 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 
相關問題