作者Thisisnotptt (這不是PTT)
看板Python
標題[問題] python string.strip 求解惑
時間Tue Jul 7 23:04:15 2015
小弟最近需要處理一些數列文字,範例如下
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://webptt.com/m.aspx?n=bbs/Python/M.1436281457.A.386.html
1F:→ Thisisnotptt: 另外 '100'.strip('.0') 也是顯示 1,究竟哪邊出了 07/07 23:05
2F:→ Thisisnotptt: 問題 07/07 23:06
3F:→ eric781101: strip是會把括弧內的字照順序一一比對踢除,直到碰到 07/07 23:10
4F:→ eric781101: 不符合的才停止,所以都會只剩下1 07/07 23:10
5F:→ eric781101: 可以用'100'.replace('.0','') 07/07 23:13
6F:→ Thisisnotptt: 正常來說'100'.strip('.0')應該在第一次比對,去除 07/07 23:18
7F:→ Thisisnotptt: '.0'的時候就應該失敗才對,因為字串中不存在'.0' 07/07 23:19
8F:→ eric781101: 不是比字串,他是看作兩個字元,.和0分別比 07/07 23:20
9F:→ Thisisnotptt: 但是strip method還是把後面兩個0都拔了,究竟是為 07/07 23:21
10F:→ Thisisnotptt: 為什麼? 07/07 23:21
11F:→ eric781101: 他設計就是這樣Orz, 你可以試試看 07/07 23:22
12F:→ Thisisnotptt: 喔喔,所以只要有'.'與'0'都通殺就對了? 07/07 23:22
13F:→ Thisisnotptt: 那就合理了,謝謝你 07/07 23:22
14F:→ eric781101: 對,通殺直到碰到不合的 07/07 23:23
15F:→ Thisisnotptt: 一直以來我都以為是直接比對整個字串...慘 07/07 23:27
16F:→ bigpigbigpig: '100.0'.replace('.0','') ==> '100' 07/08 07:53
17F:→ zkdzvy22: 如果字串小數點後不一定是0的話可以用str(int(s))嗎? 07/09 11:25
18F:→ zkdzvy22: 速度上是不是比較慢? 07/09 11:25
19F:→ uranusjr: 直覺上這樣會比較慢, 或許可以 benchmark 一下 07/09 13:30