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í