una textos texto separar poner palabra manejo lista letras espacio contar comparar como caracteres cadenas buscar python split delimiter

textos - separar palabra en letras python



Python dividir texto por comillas y espacios (6)

Tengo el siguiente texto

text = ''This is "a simple" test''

Y necesito dividirlo de dos maneras, primero por comillas y luego por espacios, lo que da como resultado:

res = [''This'', ''is'', ''"a simple"'', ''test'']

Pero con str.split() solo puedo usar comillas o espacios como delimitadores. ¿Hay una función integrada para delimitadores múltiples?


Puedes mirar en la biblioteca de shlex.

from shlex import split a = ''This is "a simple" text'' split(a)

[''Esto'', ''es'', ''un simple'', ''texto'']

No creo que Regex sea lo que estás buscando


Para su caso, shlex.split simplemente lo hará bien.

Como respuesta a multiple delimiters?

import re re.split(''/"|/s'', string)


Puede usar shlex.split , útil para analizar cadenas entre comillas:

>>> import shlex >>> text = ''This is "a simple" test'' >>> shlex.split(text, posix=False) [''This'', ''is'', ''"a simple"'', ''test'']

Hacer esto en modo no posicionado evita la eliminación de las comillas internas del resultado de división. posix se establece en True de forma predeterminada:

>>> shlex.split(text) [''This'', ''is'', ''a simple'', ''test'']

Si tiene varias líneas de este tipo de texto o está leyendo desde una secuencia, puede dividir de manera eficiente (sin incluir las comillas en el resultado) usando csv.reader :

import io import csv s = io.StringIO(text.decode(''utf8'')) # in-memory streaming f = csv.reader(s, delimiter='' '', quotechar=''"'') print list(f) # [[''This'', ''is'', ''a simple'', ''test'']]

Si está en Python 3, no necesitará decodificar la cadena para unicode ya que todas las cadenas ya son unicode.


Si te entiendo bien, entonces puedes usar expresiones regulares

>>> import re >>> text = ''This is "a simple" test''

>>> re.split(''/s|/"'', text)

[''Esto'', ''es'', '''', ''a'', ''simple'', '''', ''prueba'']


intente usar re:

import re text = ''This is "a simple" test'' print(re.split(''/"|/s'', text))

El resultado:

[''This'', ''is'', '''', ''a'', ''simple'', '''', ''test'']


usando el lector csv .

import csv text = ''This is "a simple" test'' list_text=[] list_text.append(text) for row in csv.reader(list_text, delimiter=" "): print(row)

también puedes ver más acerca de aquí