string.strip()中使用python 2.7和3.5的奇怪错误

时间:2016-02-28 11:17:50

标签: python string strip

我使用string.strip()在一个非常简单的字符串操作上得到了一些非常奇怪的结果。我想知道这是一个只影响我的问题(我的python安装出了什么问题?)或者这是一个常见的错误?

错误是非常有线的,在这里:

>>> a = './omqbEXPT.pool'
>>> a.strip('./').strip('.pool')
'mqbEXPT' #the first 'o' is missing!!!

仅当'o'跟随'./'!

时才会发生
>>> a = './xmqbEXPT.pool'
>>> a.strip('./').strip('.pool')
'xmqbEXPT'

这里发生了什么?! 我已经在python 2.7和3.5上测试了这个,结果没有改变。

3 个答案:

答案 0 :(得分:3)

这就是strip方法实际设计的方式。

  

chars参数是一个字符串,指定要删除的字符集。

     

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

因此,当您说my_string.strip('.pools')时,它将删除该集合中的所有前导和尾随字符(即。{'.', 'p', 'o', 'l', 's'})。

您可能想要使用str.replacere.sub

>>> './omqbEXPT.pool'.replace('./', '').replace('.pool', '')
'omqbEXPT'

>>> import re
>>> re.sub(r'^\.\/|\.pool$', '', './omgbEXPT.pool')
'omqbEXPT'

答案 1 :(得分:0)

string.strip()将为每个字符左侧剥离并右侧剥离 。这意味着,当您要求它删除pool时,它会删除它在字符串的两端找到的任何pol s。这就是它剥离o

的原因

答案 2 :(得分:0)

这不是一个错误。 strip剥离作为参数传递给它的字符串中的任何字符。首先,您从字符串a中删除所有前导和尾随点和斜杠,然后字符串'.pool'包含所有字符。