有人可以向我解释Python 3.7和Ipython中的这种行为吗?
'asdf1 001.csv'.strip('001.csv')
Out[6]: 'asdf1 '
'asdf1 001.csv'.strip(' 001.csv')
Out[7]: 'asdf'
关注最后一个数字(1
)
答案 0 :(得分:2)
它遵循documentation中概述的逻辑:
chars参数不是前缀或后缀;而是删除了其值的所有组合:
还有:
最外面的前导和尾随chars参数值从字符串中去除。从前端删除字符,直到到达不包含在char字符集中的字符串字符。
它还提供了一个示例,可以帮助您理解行为:
'www.example.com'.strip('cmowz.')
>'example'
答案 1 :(得分:1)
从下面提供的文档开始-条带从开头和结尾以任何顺序删除括号中提供的所有字符,直到到达其他字符为止。在第一种情况下,没有空间,因此它停止在太空中移除;在第二种情况下,它移除了空间,并且在集合中也跟随有1。
文档从这里: https://docs.python.org/3.7/library/stdtypes.html?highlight=strip#str.strip
str.strip([chars])
Return a copy of the string with the leading and trailing characters removed. The chars argument is a string specifying the set of characters to be removed. If omitted or None, the chars argument defaults to removing whitespace. The chars argument is not a prefix or suffix; rather, all combinations of its values are stripped:
>>>
>>> ' spacious '.strip()
'spacious'
>>> 'www.example.com'.strip('cmowz.')
'example'
The outermost leading and trailing chars argument values are stripped from the string. Characters are removed from the leading end until reaching a string character that is not contained in the set of characters in chars. A similar action takes place on the trailing end. For example:
>>>
>>> comment_string = '#....... Section 3.2.1 Issue #32 .......'
>>> comment_string.strip('.#! ')
'Section 3.2.1 Issue #32'
答案 2 :(得分:0)
Python str.rstrip
不会删除字符串' 001.csv'
,它会从结尾删除' 001.csv'
中包含的每个字符,直到字符串以另一个字符结束。因此,在您的第一个示例中,'001.csv'
不包含空格,并且该功能是通过'asdf1 '
完成的。在第二个示例中,rstrip
在删除空格后不会停止,因为' 001.csv'
仍然包含'1'