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

map次のように簡略化してofを削除できます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()

上記の 2 つが実質的に同一でない場合はありますか? もしそうなら、それらは何ですか?

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 に答える