[問題] List 裡有字串及數字處理
大家好,第一次在這個版問這種問題
如果問題太簡單真的不好意思
>>> a = ['John','1,800','Joe','1,200']
目標是把數字的字串型態改為整數型態
還有把數字的逗點移除
目標>> a = ['John',1800,'Joe',1200]
我自己經過網路查詢之後,有以下方法
>>> for index, item in enumerate(a):
try:
a[index]=int(item.replace(',',''))
except ValueError:
pass
雖然5行已經很少了,但我本人不是很喜歡用try和except,每次
程式失敗才想到要用,所以想問問有沒有比較好的方法,不知道
能不能用一行的表達式就可以完成這個問題?
不好意思,再多問一個問題,如果
>>> a = ['1200','0.03']
有辦法讓
>>> a = [1200,0.03]
因為用float會變成[1200.0,0.03],我不希望1200帶小數點
---------------------------------------------------------
謝謝大家的回答,尤其是Sisssy大
第一題:
>>> [int(i.replace(',','')) if i[:].isdigit() else i for i in a]
第二題:
>>> [int(i) if float(i).is_int() else float(i) for i in a]
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.253.33
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1487369795.A.C30.html
※ 編輯: ntumath (140.112.253.33), 02/18/2017 06:32:26
推
02/18 06:52, , 1F
02/18 06:52, 1F
isdigit()會回傳boolean,我中途有想用,請問有接續嗎?
※ 編輯: ntumath (140.112.252.182), 02/18/2017 07:02:21
推
02/18 07:40, , 2F
02/18 07:40, 2F
→
02/18 07:41, , 3F
02/18 07:41, 3F
推
02/18 07:45, , 4F
02/18 07:45, 4F
→
02/18 07:45, , 5F
02/18 07:45, 5F
→
02/18 07:45, , 6F
02/18 07:45, 6F
推
02/18 07:52, , 7F
02/18 07:52, 7F
→
02/18 07:52, , 8F
02/18 07:52, 8F
Sisssy,謝謝你的回答,不過第一個問題我發現我要處理的資料還真的有一些項是數字開
頭的,這些項如果想要繼續保持字串,可以以list comprehension的方式達到嗎?
→
02/18 09:23, , 9F
02/18 09:23, 9F
→
02/18 09:23, , 10F
02/18 09:23, 10F
※ 編輯: ntumath (140.112.252.182), 02/18/2017 11:42:38
※ 編輯: ntumath (140.112.253.33), 02/18/2017 12:16:13
→
02/19 00:11, , 11F
02/19 00:11, 11F
→
02/19 00:11, , 12F
02/19 00:11, 12F
推
02/22 07:55, , 13F
02/22 07:55, 13F
Python 近期熱門文章
PTT數位生活區 即時熱門文章