为什么这条语句会删除 'PIPELINE' 中的 'E':
In: 'PIPELINE_DEV'.rstrip('_DEV')
Out: 'PIPELIN'
但是这个语句并没有删除'S':
In: 'PIPELINES_DEV'.rstrip('_DEV')
Out: 'PIPELINES'
此语句删除末尾的所有 E:
In: 'PIPELINEEEEEEEE_DEV'.rstrip('_DEV')
Out: 'PIPELIN'
当我将 rstrip 变成 2 个单独的语句时,它工作正常:
In: 'PIPELINE_DEV'.rstrip('DEV').rstrip('_')
Out: 'PIPELINE'
请您参考如下方法:
rstrip 从应用它的字符串中删除您提供的字符的任何尾随实例,直到它找到不匹配的内容。这在 its documentation 中说明:
The chars argument is not a suffix; rather, all combinations of its values are stripped
使用 rstrip('_DEV') 它将从字符串中删除 _DEV,然后删除所有 E(或 'D 's 或 'V's 或 '_'s) 因为它们属于您提供的字符集(并且没有其他字符是'已找到该集合中的 t)。
当您使用 .rstrip('DEV').rstrip('_') 时,对 rstrip 的第一次调用会剥离 'DEV' 然后停止,因为 '_' 不在字符集 'DEV' 中。当第二次调用 rstrip 时,'_' 被删除。
请注意,在 Python >= 3.9 中,str.removesuffix是added为了解决这个普遍的误解。使用 removesuffix,您可以提供一个已删除的后缀字符串(如果存在)作为应用它的字符串的后缀。
你的例子:
'PIPELINE_DEV'.removesuffix('_DEV')
只会删除 '_DEV' 后缀。
