split()字符串上的Python strip()是否可以执行任何操作?

Wil*_*mKF 4 python split strip python-2.7

基于一些实验,在我看来,以下Python v2.7代码:

def lookup_pattern(pattern, file_containing_patterns):
  for line in file_containing_patterns:
    splits = line.split()
    if splits:
      if (pattern == splits[0]):
        return map(lambda x: x.strip(), splits[1:])
  return None
Run Code Online (Sandbox Code Playgroud)

可以简化如下砸mapstrip():

def lookup_pattern(pattern, file_containing_patterns):
  for line in file_containing_patterns:
    splits = line.split()
    if splits:
      if (pattern == splits[0]):
        return splits[1:]
  return None
Run Code Online (Sandbox Code Playgroud)

我相信这是真的,因为split()应该删除所有的空白区域,因此这strip()将是一个无操作.

是否有任何情况下,上述两个效果不相同,如果是,它们是什么?

unp*_*680 6

文件表明,split与隐空格分隔符(即,split()没有进一步的参数)将清除出任何"空标记",你不需要任何剥离.由于任何连续的空白系列都可以解释为由空格分隔的空标记列表,这意味着字符串会自动修剪.

如果您使用不同的分隔符拆分或隐式定义了空格,则可能会发生以下情况:

' 1  2   3  '.split()
=> ['1', '2', '3']

'  1  2   3  '.split(None, 1)
=> ['1', '2   3  ']
Run Code Online (Sandbox Code Playgroud)