Python条带函数的奇怪行为

时间:2011-10-21 18:49:31

标签: python string strip

  

可能重复:
  python str.strip strange behavior

我有以下代码:

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

当我执行时,它只打印55,但我希望它打印55000。我认为dot中的strip导致了escape Regular Expression st = st.strip('\.0')因此我也尝试.0,但仍然会给出相同的结果。任何想法为什么它不仅仅是条带化{{1}}以及为什么所有零条纹?

7 个答案:

答案 0 :(得分:8)

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

你要求它从两端剥离.0,所以它会离开55

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

答案 1 :(得分:5)

因为你告诉它去除所有句号和0,所以它会一直向上移动到第一个非句号非0字符。

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

尝试这样的事情:

st.partition('.')[0]

答案 2 :(得分:4)

请参阅str.strip上的文档,重要部分是:

chars 参数不是前缀或后缀;相反,它的所有值组合都被剥离了:

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

答案 3 :(得分:2)

因为that's what strip does

  

chars参数不是前缀或后缀;相反,它的所有值组合都被剥离了

答案 4 :(得分:2)

因为strip的参数是要删除的字符的 set ,而不是要删除的字符串。换一种说法。它会删除该字符串末尾的每个字符,这些字符位于集合中的任何位置,直到遇到不在该集合中的字符。

答案 5 :(得分:1)

strip适用于个别角色。你告诉它剥去所有'。'和'0'字符,这就是它的作用。

答案 6 :(得分:1)

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

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

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