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