6

根据一些实验,在我看来,以下 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

可以简化如下以删除mapof strip()

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

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

是否存在上述两种在效果上不相同的情况,如果有,它们是什么?

4

1 回答 1

6

文档表明,split使用隐式空格分隔符(即,split()没有进一步的参数)将清除任何“空标记”,并且您不需要删除任何内容。由于任何连续的空白系列都可以解释为由空格分隔的空标记列表,这意味着字符串会自动修剪。

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

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

'  1  2   3  '.split(None, 1)
=> ['1', '2   3  ']
于 2013-03-27T18:38:43.087 回答