Tener x.split(y)
siempre devolverá una lista de 1 + x.count(y)
artículos es una regularidad preciosa - como @ gnibbler ya ha señalado que hace split
y join
inversas exactas una de otra (ya que obviamente deben ser), sino que también mapea con precisión la semántica de todo tipo de registros unidos por delimitadores (como csv
líneas de archivos [[neta de problemas de cotización]], líneas de /etc/group
en Unix, etc.), permite (como se menciona la respuesta de @Roman) verificaciones fáciles para (por ej.) absoluto vs rutas relativas (en rutas de archivos y URL), y así sucesivamente.
Otra forma de verlo es que no se debe simplemente tirar información fuera de la ventana sin ninguna ganancia. ¿Qué se ganaría al hacer x.split(y)
equivalente a x.strip(y).split(y)
? Nada, por supuesto, es fácil usar el segundo formulario cuando eso es lo que quieres decir, pero si el primer formulario fue arbitrariamente considerado como el segundo, tendrías mucho trabajo por hacer cuando quieres quieres el primero uno (que está lejos de ser raro, como lo señala el párrafo anterior).
Pero en realidad, pensar en términos de regularidad matemática es la manera más simple y general que puede aprender a diseñar API transitables. Para tomar un ejemplo diferente, es muy importante que para cualquier x
y y
válido x == x[:y] + x[y:]
- que indica inmediatamente por qué un extremo de un corte se debe excluir. Cuanto más simple es la afirmación invariante que puede formular, más probable es que la semántica resultante sea lo que necesita en los usos de la vida real, parte del hecho místico de que las matemáticas son muy útiles para tratar con el universo.
Pruebe la formulación de la invariante para un dialecto en el que split
anterior y posterior son delimitadores ... contraejemplo-especial entubado: métodos de cadena tales como isspace
no son máximamente sencilla - x.isspace()
es equivalente a x and all(c in string.whitespace for c in x)
- que tonta líder x and
es por eso que a menudo se encuentra codificando not x or x.isspace()
, para volver a la simplicidad que debería se han diseñado en los métodos de cadena is...
(por lo que una cadena vacía "es" lo que usted quiera, contrario a man-in-the- street horse-sense, tal vez [[sets vacíos, como cero & c, siempre han confundido a la mayoría de las personas ;-)]], pero totalmente conforme a obvio bien refinado math ematical sentido común! -).
tengo la misma pregunta y buscó durante mucho tiempo. Ahora entiendo que los resultados vacíos son realmente importantes. Gracias por tu pregunta – Emerald214
Una solución es usar 'strip()' para quitar los caracteres de división iniciales y finales de la cadena antes de dividir: ''/ segment/segment /'. Strip ('/'). Split ('/')' – pkamb