作者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/cn.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