我使用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上测试了这个,结果没有改变。
答案 0 :(得分:3)
这就是strip
方法实际设计的方式。
chars参数是一个字符串,指定要删除的字符集。
chars参数不是前缀或后缀;相反,它的所有值组合都被剥离了:
因此,当您说my_string.strip('.pools')
时,它将删除该集合中的所有前导和尾随字符(即。{'.', 'p', 'o', 'l', 's'}
)。
您可能想要使用str.replace
或re.sub
。
>>> './omqbEXPT.pool'.replace('./', '').replace('.pool', '')
'omqbEXPT'
>>> import re
>>> re.sub(r'^\.\/|\.pool$', '', './omgbEXPT.pool')
'omqbEXPT'
答案 1 :(得分:0)
string.strip()将为每个字符左侧剥离并右侧剥离 。这意味着,当您要求它删除pool
时,它会删除它在字符串的两端找到的任何p
或o
或l
s。这就是它剥离o
。
答案 2 :(得分:0)
这不是一个错误。 strip
剥离作为参数传递给它的字符串中的任何字符。首先,您从字符串a
中删除所有前导和尾随点和斜杠,然后字符串'.pool'
包含所有字符。