奇怪行为

问题描述:

可能重复:
python str.strip strange behavior奇怪行为

我已经下面的代码段:

st = '55000.0' 
st = st.strip('.0') 
print st 

当我执行,它只能打印55但我期望它打印55000。我认为在stripstrip导致这一点,因为我们通常escape它在Regular Expression所以我也试过st = st.strip('\.0'),但仍然是给出相同的结果。任何想法,为什么它不仅仅是条纹.0和为什么全部是零条纹?

+1

可以只使用'INT(圆(浮动(ST)))' –

+0

1至@KennyTM - 快速说明的是,带材'()'删除任何在字符串的开始和结尾的参数中指定的字符,并返回一个没有这些字符的新字符串。 – birryree

你误解条() - 它消除任何从两端的指定的字符;这里没有正则表达式的支持。

您正在要求它将两端的.0都去掉,所以它会 - 然后以55离开。

有关详细信息,请参阅official String class docs

+0

噢,我现在明白了,谢谢 –

参见str.strip的文档,重要的部分是:

字符参数不是前缀或后缀;相反,它的值的所有组合被剥离:单个的字符

>>> ' spacious '.strip() 
'spacious' 
>>> 'www.example.com'.strip('cmowz.') 
'example' 
+0

和同样的规则适用于'rstrip'? –

+0

是的,和rstrip一样。 –

strip作品。你告诉它去掉所有'。'和'0'字符,这就是它所做的。

因为你告诉它去掉所有的句号和0,所以它会一直持续到第一个非句号非0字符。

Strip使用字符列表,而不是它们的特定配置。

尝试这样代替:

st.partition('.')[0] 
+1

这工作正常。我会使用rpartition(),因为我认为它是从右边剥离的。 –

+0

当然,取决于你期望在字符串中看到什么。如果这是一个正常的十进制数字,可以工作。 –

+1

+1:针对特定情况的最佳解决方法。 –

因为that's what strip does

的字符参数不是前缀或后缀;更确切地说,它的值的所有组合被剥离

由于参数strip字符集合被移除,而不是被去除。换一种说法。它从集合中任何位置的字符串末尾移除每个字符,直到遇到不在该集合中的字符。

参考http://docs.python.org/library/stdtypes.html#string-formatting

的[字符]参数列出了必须从字符串中删除的字符集!

要获得的5500所期望的结果,使用a.split('.0')[0]