Un Python strip() sur un split() de la chaîne de faire quelque chose?
Basée sur quelques expériences, il me semble que la suite de Python v2.7 code:
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
Pourrait être simplifiée comme suit pour déposer le map
de 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
Je crois que c'est vrai parce que le split()
devez supprimer tous les blancs de l'espace et donc la strip()
serait un no-op.
Existe-il des cas où, dans les deux ci-dessus ne sont pas identiques en effet, si oui, quels sont-ils?
split()
diviser une chaîne suivie par l'espace, il n'est pas de supprimer des espaces blancs.Hein??? Bien sûr, il ne.
>>> 'foo '.split()
-> ['foo']
OriginalL'auteur WilliamKF | 2013-03-27
Vous devez vous connecter pour publier un commentaire.
La documents indiquent que
split
avec l'implicite de l'espace séparateur (qui est,split()
sans arguments) va effacer tout "vide jetons" et vous n'avez pas besoin de bande quoi que ce soit. Comme toute série consécutive de l'espace pourrait être interprété comme une liste de vide jetons délimité par l'espace, que vais dire les chaînes d'obtenir garnis automatiquement.Si, au lieu de fractionner avec un autre délimiteur ou implicitement défini les espaces, ce qui peut arriver:
OriginalL'auteur souser12345