[問題] python string.strip 求解惑

看板Python作者 (這不是PTT)時間8年前 (2015/07/07 23:04), 編輯推噓0(0019)
留言19則, 5人參與, 最新討論串1/2 (看更多)
小弟最近需要處理一些數列文字,範例如下 stringA = '100.0' stringB = '10.0' 兩字串經過 .strip('.0') 處理後: stringA.strip('.0') = '1' stringB.strip('.0') = '1' 達不到把字串尾部 '.0' 處理掉的效果。 請問是我對 strip 或 string 定義哪邊理解錯誤 麻煩各位指點迷津,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.100.118.220 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1436281457.A.386.html

07/07 23:05, , 1F
另外 '100'.strip('.0') 也是顯示 1,究竟哪邊出了
07/07 23:05, 1F

07/07 23:06, , 2F
問題
07/07 23:06, 2F

07/07 23:10, , 3F
strip是會把括弧內的字照順序一一比對踢除,直到碰到
07/07 23:10, 3F

07/07 23:10, , 4F
不符合的才停止,所以都會只剩下1
07/07 23:10, 4F

07/07 23:13, , 5F
可以用'100'.replace('.0','')
07/07 23:13, 5F

07/07 23:18, , 6F
正常來說'100'.strip('.0')應該在第一次比對,去除
07/07 23:18, 6F

07/07 23:19, , 7F
'.0'的時候就應該失敗才對,因為字串中不存在'.0'
07/07 23:19, 7F

07/07 23:20, , 8F
不是比字串,他是看作兩個字元,.和0分別比
07/07 23:20, 8F

07/07 23:21, , 9F
但是strip method還是把後面兩個0都拔了,究竟是為
07/07 23:21, 9F

07/07 23:21, , 10F
為什麼?
07/07 23:21, 10F

07/07 23:22, , 11F
他設計就是這樣Orz, 你可以試試看
07/07 23:22, 11F

07/07 23:22, , 12F
喔喔,所以只要有'.'與'0'都通殺就對了?
07/07 23:22, 12F

07/07 23:22, , 13F
那就合理了,謝謝你
07/07 23:22, 13F

07/07 23:23, , 14F
對,通殺直到碰到不合的
07/07 23:23, 14F

07/07 23:27, , 15F
一直以來我都以為是直接比對整個字串...慘
07/07 23:27, 15F

07/08 07:53, , 16F
'100.0'.replace('.0','') ==> '100'
07/08 07:53, 16F

07/09 11:25, , 17F
如果字串小數點後不一定是0的話可以用str(int(s))嗎?
07/09 11:25, 17F

07/09 11:25, , 18F
速度上是不是比較慢?
07/09 11:25, 18F

07/09 13:30, , 19F
直覺上這樣會比較慢, 或許可以 benchmark 一下
07/09 13:30, 19F
文章代碼(AID): #1Lc-fnE6 (Python)
文章代碼(AID): #1Lc-fnE6 (Python)