Pregunta

Esta es una pregunta muy novato y voy a conseguir probablemente downvoted para ello, pero yo honestamente no podía encontrar la respuesta después de al menos una hora buscando en Google. He aprendido cómo cortar las cadenas basadas en "ubicaciones exactas", donde usted tiene que saber exactamente donde termina la palabra. Pero yo no he encontrado ningún artículo que explica cómo hacerlo en cadenas "no estáticos" que podrían cambiar.

Además no quiero usar string.split () en este caso ya que es un poco exagerado para lo que necesito.

Tengo básicamente una cadena como esta:

myString = "!save python Python is a high-level object oriented language created by Guido van Rossum."
# the format is !save [singleword] [definition]

i necesidad de "corte" esta cadena, pero no puedo encontrar la manera correcta de hacerlo.

i necesidad de ahorrar a la variable del título (Python en este caso) y la definición de esta cadena. Somethig como:

title = myString[1]
definition = myString[everything after string[1]

No estoy exactamente seguro de cómo hacer esto cuando se tiene una cadena dinámica en la que usted no sabe dónde termina cada palabra.

Le agradecería algunos consejos sobre qué funciones / métodos debo leer a archieve esto. Gracias de antemano.

¿Fue útil?

Solución

¿Por qué es un exceso de división?

verb, title, definition = myString.split (' ', 2)

Otros consejos

Si tiene espacios entre su comando, el título y la definición que podría:

wordList = myString.split()
cmd = wordList[0] # !save
title = wordList[1] # python
definition = ' '.join(wordList[2:])  # Python is a high-level object oriented language created by Guido van Rossum.

Si realmente prefiere no utilizar dividida podría utilizar expresiones regulares:

import re
m = re.match('(/S+)/s*(/S+)/s*(.*)')
cmd = m.group(1)
title = m.group(2)
definition = m.group(3)

La respuesta seleccionada (después de PEP8ing):

verb, title, definition = my_string.split(' ', 2)

divide en un solo espacio. Es probable que una mejor opción para dividir en acarreos de espacios en blanco, por si acaso existen pestañas o varios espacios a ambos lados del título:

verb, title, definition = my_string.split(None, 2)

Ten en cuenta también la normalización de los espacios en blanco en la definición:

definition = ' '.join(definition.split())
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top