奇怪行为
我已经下面的代码段:
st = '55000.0'
st = st.strip('.0')
print st
当我执行,它只能打印55
但我期望它打印55000
。我认为在strip
strip
导致这一点,因为我们通常escape
它在Regular Expression
所以我也试过st = st.strip('\.0')
,但仍然是给出相同的结果。任何想法,为什么它不仅仅是条纹.0
和为什么全部是零条纹?
你误解条() - 它消除任何从两端的指定的字符;这里没有正则表达式的支持。
您正在要求它将两端的.
和0
都去掉,所以它会 - 然后以55
离开。
有关详细信息,请参阅official String class docs。
噢,我现在明白了,谢谢 –
参见str.strip
的文档,重要的部分是:
的字符参数不是前缀或后缀;相反,它的值的所有组合被剥离:单个的字符
>>> ' spacious '.strip()
'spacious'
>>> 'www.example.com'.strip('cmowz.')
'example'
和同样的规则适用于'rstrip'? –
是的,和rstrip一样。 –
strip
作品。你告诉它去掉所有'。'和'0'字符,这就是它所做的。
因为你告诉它去掉所有的句号和0,所以它会一直持续到第一个非句号非0字符。
Strip使用字符列表,而不是它们的特定配置。
尝试这样代替:
st.partition('.')[0]
这工作正常。我会使用rpartition(),因为我认为它是从右边剥离的。 –
当然,取决于你期望在字符串中看到什么。如果这是一个正常的十进制数字,可以工作。 –
+1:针对特定情况的最佳解决方法。 –
由于参数strip
是字符集合被移除,而不是串被去除。换一种说法。它从集合中任何位置的字符串末尾移除每个字符,直到遇到不在该集合中的字符。
参考http://docs.python.org/library/stdtypes.html#string-formatting
的[字符]参数列出了必须从字符串中删除的字符集!
要获得的5500所期望的结果,使用a.split('.0')[0]
可以只使用'INT(圆(浮动(ST)))' –
1至@KennyTM - 快速说明的是,带材'()'删除任何在字符串的开始和结尾的参数中指定的字符,并返回一个没有这些字符的新字符串。 – birryree