看板 Python 關於我們 聯絡資訊
小弟最近需要處理一些數列文字,範例如下 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
Thisisnotptt: 另外 '100'.strip('.0') 也是顯示 1,究竟哪邊出了 07/07 23:05
Thisisnotptt: 問題 07/07 23:06
eric781101: strip是會把括弧內的字照順序一一比對踢除,直到碰到 07/07 23:10
eric781101: 不符合的才停止,所以都會只剩下1 07/07 23:10
eric781101: 可以用'100'.replace('.0','') 07/07 23:13
Thisisnotptt: 正常來說'100'.strip('.0')應該在第一次比對,去除 07/07 23:18
Thisisnotptt: '.0'的時候就應該失敗才對,因為字串中不存在'.0' 07/07 23:19
eric781101: 不是比字串,他是看作兩個字元,.和0分別比 07/07 23:20
Thisisnotptt: 但是strip method還是把後面兩個0都拔了,究竟是為 07/07 23:21
Thisisnotptt: 為什麼? 07/07 23:21
eric781101: 他設計就是這樣Orz, 你可以試試看 07/07 23:22
Thisisnotptt: 喔喔,所以只要有'.'與'0'都通殺就對了? 07/07 23:22
Thisisnotptt: 那就合理了,謝謝你 07/07 23:22
eric781101: 對,通殺直到碰到不合的 07/07 23:23
Thisisnotptt: 一直以來我都以為是直接比對整個字串...慘 07/07 23:27
bigpigbigpig: '100.0'.replace('.0','') ==> '100' 07/08 07:53
zkdzvy22: 如果字串小數點後不一定是0的話可以用str(int(s))嗎? 07/09 11:25
zkdzvy22: 速度上是不是比較慢? 07/09 11:25
uranusjr: 直覺上這樣會比較慢, 或許可以 benchmark 一下 07/09 13:30