characters python

split string to characters python



string.split(text) o text.split() ¿cuál es la diferencia? (5)

Curiosamente, las cadenas de docs para los dos no son completamente iguales en Python 2.5.1:

>>> import string >>> help(string.split) Help on function split in module string: split(s, sep=None, maxsplit=-1) split(s [,sep [,maxsplit]]) -> list of strings Return a list of the words in the string s, using sep as the delimiter string. If maxsplit is given, splits at no more than maxsplit places (resulting in at most maxsplit+1 words). If sep is not specified or is None, any whitespace string is a separator. (split and splitfields are synonymous) >>> help("".split) Help on built-in function split: split(...) S.split([sep [,maxsplit]]) -> list of strings Return a list of the words in the string S, using sep as the delimiter string. If maxsplit is given, at most maxsplit splits are done. If sep is not specified or is None, any whitespace string is a separator.

Excavando más profundamente, verás que las dos formas son completamente equivalentes, ya que string.split (s) en realidad llama a s.split () (busca las funciones de división ).

Hay una cosa que no entiendo ...

Imagina que tienes un texto = "hola mundo" y quieres dividirlo.

En algunos lugares, veo personas que quieren dividir el texto haciendo:

string.split(text)

En otros lugares, veo gente haciendo:

text.split()

¿Cual es la diferencia? ¿Por qué lo haces de una manera u otra? ¿Puedes darme una explicación teórica sobre eso?


El string.split(stringobj) es una característica del módulo de string , que se debe importar por separado. Érase una vez, esa era la única forma de dividir una cuerda. Ese es un viejo código que estás viendo.

El stringobj.split() es una característica de un objeto de cadena, stringobj , que es más reciente que el módulo de string . Pero bastante viejo, sin embargo. Esa es la práctica actual.


Respuesta corta: el módulo de cadena era la única forma de realizar estas operaciones antes de Python 1.6. Desde entonces, se han agregado a cadenas como métodos.


Una nota extra: str es el tipo de cadena, como señala S.Lott arriba. Eso significa que estas dos formas:

''a b c''.split() str.split(''a b c'') # both return [''a'', ''b'', ''c'']

... son equivalentes, porque str.split es el método s.split , mientras que s.split es un método vinculado de un objeto str . En el segundo caso, la cadena que pasa a str.split se usa como self en el método.

Aquí no hace mucha diferencia, pero es una característica importante de cómo funciona el sistema de objetos de Python.

Más información sobre métodos vinculados y no vinculados.


Usa lo que quieras, pero ten en cuenta que str.split es la forma recomendada de hacerlo. :-)

string.split es un método un poco más antiguo de hacer lo mismo.

str.split es un poco más eficiente (ya que no tiene que importar el módulo de cadena o buscar ningún nombre), pero no lo suficiente como para hacer una gran diferencia si prefiere string.split.